4
我有這樣的代碼有兩種VS2010項目:爲什麼對齊參數編譯正確,但在運行時崩潰?
__declspec(align(16)) struct S {
int a;
};
void f(S v) {}
它不應該編譯,因爲你無法通過對齊函數的參數(除非你通過引用傳遞);和一個項目確實拒絕它,如我所料。但另一個項目將其編譯爲O.K.,然後在運行時崩潰。
我的問題是:爲什麼這個被允許編譯?
我查看了所有的編譯器選項,我找不到任何相關的東西。
無重放。 Visual C++ 2010的RTM和SP1版本都會發出預期的診斷:「'錯誤C2719:'v':具有__declspec(align('16'))的形式參數不會與默認編譯選項對齊。請發佈一個完整的repro來證明問題。 –
我無法用多個文件發佈整個項目。我的問題是,可以以某種方式禁用此錯誤。 –
不,不能禁用錯誤。 –