【发布时间】:2016-12-06 20:52:34
【问题描述】:
考虑以下 C 代码:
typedef __attribute__((aligned(16))) signed int INT32;
int main(int argc, char* argv[], char* envp[])
{
INT32 my_array[255];
return 0;
}
编译返回错误:
alignment_problem.c: In function ‘main’:
alignment_problem.c:7:2:error: alignment of array elements is greater than element size
INT32 my_array[255];
由于此错误,我的程序无法编译。
有没有一种方法可以定义INT32 以使对齐有效?
我知道clang 编译此代码没有错误,但我想知道是否有办法使用gcc 编译代码。
编辑:问题是,typedef INT32 是一个大程序之一。所以我正在寻找的解决方案是改变INT32的定义,这样程序才能编译运行。
【问题讨论】:
-
您是否打算让数组的每个元素在 16 字节边界上对齐?
-
这是一个关于 gcc 的问题。标记它 gcc。
标签: c arrays gcc alignment typedef