4

2 つの VS2010 プロジェクトにこのコードがあります。

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

void f(S v) {}

整列された引数を関数に渡すことができないため (参照渡ししない限り)、コンパイルしないでください。私が予想したように、 1つのプロジェクトそれを拒否します。しかし、他のプロジェクトはそれを正常にコンパイルし、実行時にクラッシュします。

私の質問は、これがコンパイルできるのはなぜですか?

すべてのコンパイラ オプションを調べましたが、関連するものは見つかりません。

4

1 に答える 1

0

「align」というマクロがどこにも定義されていないことを確認しましたか? そうでない場合は、配置します

#undef align

コードのすぐ上で再コンパイルします。失敗した場合は、そのマクロがどこかに定義されています。

于 2013-02-21T19:24:26.767 に答える