Types 使用llvm gcc编译时如何提示类型?

Types 使用llvm gcc编译时如何提示类型?,types,llvm,llvm-gcc,type-systems,Types,Llvm,Llvm Gcc,Type Systems,在一些C代码中,我将一个简单的静态数组定义为函数参数,例如: void foo(float color[3]); 当我使用llvm gcc编译它时,它会生成以下llvm汇编语言输出: define void @foo(float* %n1) nounwind ssp { 是否有任何方法可以提示编译器,我希望它使用堆栈上的LLVM数组[3 x float]或向量,而不是指针来生成代码?void foo(float color[3])由C标准定义为等同于void foo(float*color)

在一些C代码中,我将一个简单的静态数组定义为函数参数,例如:

void foo(float color[3]);
当我使用
llvm gcc
编译它时,它会生成以下llvm汇编语言输出:

define void @foo(float* %n1) nounwind ssp {

是否有任何方法可以提示编译器,我希望它使用堆栈上的LLVM数组
[3 x float]
或向量
,而不是指针来生成代码?

void foo(float color[3])由C标准定义为等同于
void foo(float*color)。也许您想要
void foo(float(*color)[3])
,或者
struct vec{float elems[3];};void foo(结构向量颜色)

void foo(浮动颜色[3])由C标准定义为等同于
void foo(float*color)。也许您想要
void foo(float(*color)[3])
,或者
struct vec{float elems[3];};void foo(结构向量颜色)

一般来说,您不能。它是C标准/平台ABI,用于定义类型的布局等


如果你想对红外发射进行如此精细的控制,你需要用手(或修改叮当声等)来完成。

一般来说,你不能。它是C标准/平台ABI,用于定义类型的布局等

如果你想对红外发射进行如此精细的控制,你需要用手(或修改叮当声等)来完成