1

GCCの下でコンパイルされた私のC++プログラムが(構造体のメンバの)最大4バイトのアラインメントを持つことを望みます。 #pragma packディレクティブでこれを行うことができます。しかし、私の場合はプロジェクトが非常に大きいので不快なので、#pragma packというヘッダーを1つ作成する必要があります。これはどこにでも置く必要があります。さて、gccコンパイラには、-と書かれている-mstructure-size-boundary = nオプションがあります。「許容値は8,32,64です。実際には、私はそれを4バイトコンパイラに設定しようとすると、警告 "構造体の境界は8,32または64にしか設定できません"(驚いたことに、え?)。しかし、なぜ#pragmaを通して4に設定できるのですか?コンパイラ設定で8-32-64以外の値にgcc構造体のアラインメントを設定する方法は誰にも分かりますか?コンパイラの設定(プラグマではない)によってGCCに構造体サイズの境界を4バイトに設定する方法を教えてください。

答えて

2

を参照してください。これは、構造のサイズを示します(名前が示すとおり)。これはメンバーの配置に関係しません。そのためには、(プラグマ以外の)オプション-fpack-struct[=n]を使用することができます。

2

-mstructure-size-boundary = nは、#pragma packがバイトを使用している間、ビット単位でアライメントを指定します。

4バイト - > 32ビット。

は、あなたが間違ったmstructureサイズ・オプションを理解gccのオプション-fpack-構造体にも

関連する問題