2

GCCでコンパイルされたc++プログラムで、(構造体のメンバーの)最大4バイトのアラインメントが必要です。これは、#pragmapackディレクティブを介して実際に行うことができます。ただし、私の場合はプロジェクトが非常に大きいため不快であり、#pragmaパックを使用して単一のヘッダーを作成する必要があります。これはどこにでも含める必要があります。現在、gccコンパイラにはオプション-mstructure-size-boundary = nがあり、ここに記載されていますhttp://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html#ARM-Options、「許容値は8です。 32と64。」実際には、4バイトに設定しようとすると、コンパイラは「構造サイズの境界は8、32、または64にしか設定できません」という警告をスローします(驚くべきことですが)。しかし、なぜ#pragmaを介して4に設定できるのでしょうか。コンパイラ設定を介してgccstructアライメントを8-32-64以外の値に設定する方法を知っている人はいますか?

4

2 に答える 2

3

-mstructure-size-boundary = nはビット単位の配置を指定し、#pragmapackはバイトを使用します。

4バイト->32ビット。

gccオプション-fpack-structも参照してください。

于 2012-04-23T08:39:47.290 に答える
3

あなたはmstructure-size-optionが間違っていることを理解しました。これは、構造のサイズを指します(名前が示すように)。これは、メンバーの配置とは関係ありません。そのためには、(プラグマ以外に)オプションを使用できます-fpack-struct[=n]

于 2012-04-23T08:40:09.147 に答える