4

我在两个 VS2010 项目中有这段代码:

__declspec(align(16)) struct S {
    int a;
};

void f(S v) {}

它不应该编译,因为你不能将对齐的参数传递给函数(除非你通过引用传递它们);正如我所料,一个项目确实拒绝了它。但是另一个项目编译它OK,然后它在运行时崩溃。

我的问题是:为什么允许编译?

我查看了所有编译器选项,但找不到任何相关内容。

4

1 回答 1

0

您是否确认您没有在任何地方定义名为“align”的宏?如果没有,那么放置

#undef align

直接在代码上方并重新编译。如果它失败了,那么你在某处定义了那个宏。

于 2013-02-21T19:24:26.767 回答