我在两个VS2010项目中有这个代码:
__declspec(align(16)) struct S {
int a;
};
void f(S v) {}
它不应该编译,因为你不能将对齐的参数传递给函数(除非你通过引用传递它们);正如我所料,一个项目 拒绝它。但是另一个项目将它编译成O.K.然后它在运行时崩溃。
我的问题是:为什么要允许编译?
我查看了所有编译器选项,但找不到任何相关内容。
答案 0 :(得分:0)
您是否确认在任何地方都没有定义名为'align'的宏?如果没有,那么放置
#undef align
紧接在代码上方并重新编译。如果失败,那么你就可以在某处定义宏。