はい、がの場合:http://msdn.microsoft.com/en-us/library/83ythb65.aspx しかし、それは私には分かりません。まず、__declspec(align(#))
は、それで宣言された(構造体内の)すべてのオブジェクトを整列オフセットで開始します。その部分は明らかです。アライメントは、オブジェクトが入っている構造体によっても「継承」されますが、オブジェクトのサイズは変更されません。`__declspec(align(#))`はどのように機能しますか?
__declspec(align(32)) struct aType {int a; int b;};
sizeof(aType);
リターン32
:正確には、なぜこのコードでsizeof()
していますか?
実際に**構造体/オブジェクトのサイズを**変更しますか? – NPS
はい、 'struct'は32バイトになりました。 2つの整数の8バイトと24のそれらのバイトは、例えば配列の最初のaTypeオブジェクトと2番目のaTypeオブジェクトとの間の空白スペースを埋めるための "filler"です。 –
それでは、なぜここにあるのですか? 'struct aType {int a; int b;}; typedef __declspec(align(32))struct aType bType; 'サイズ変更ではなくアライメントだけが変更されます([MSDN](http://msdn.microsoft.com/pl-pl/library/83ythb65.aspx) __declspec(align(#)) ")で新しい型を定義する? – NPS