如果我创建一个类似于
typedef struct A
{
int a;
char b;
} sampleType __attribute__ ((aligned (128)));
这种类型的所有变量都将按128位边界对齐。
这种类型的全局和局部变量是否相同?
还是编译器之间的区别?
GCC/LLVM如何处理它们?
最佳答案
有一点需要澄清-只有使用sampleType
typedef的变量才会强制执行指定的对齐方式。
使用struct A
声明的变量不会。
这个语法是GCC扩展-其他编译器可能支持也可能不支持(MSVC不支持,我不知道LLVM是否支持)。