我在两个 VS2010 项目中有这段代码:
__declspec(align(16)) struct S {
int a;
};
void f(S v) {}
它不应该编译,因为你不能将对齐的参数传递给函数(除非你通过引用传递它们);正如我所料,一个项目确实拒绝了它。但是另一个项目编译它OK,然后它在运行时崩溃。
我的问题是:为什么允许编译?
我查看了所有编译器选项,但找不到任何相关内容。
我在两个 VS2010 项目中有这段代码:
__declspec(align(16)) struct S {
int a;
};
void f(S v) {}
它不应该编译,因为你不能将对齐的参数传递给函数(除非你通过引用传递它们);正如我所料,一个项目确实拒绝了它。但是另一个项目编译它OK,然后它在运行时崩溃。
我的问题是:为什么允许编译?
我查看了所有编译器选项,但找不到任何相关内容。