Renesas Synergy™

FAQ 1009863 : pack=1 もしくは#pragma pack 1 を使用していると、構造体メンバが正しいアドレスに割り付けられないことがあります。

Q: 質問

pack=1 もしくは#pragma pack 1 を使用していると、構造体メンバが正しいアドレスに割り付けられないことがあります。


A: 回答

以下2点を確認してください。

    1. アライメント数が異なるメンバを記述していないか。
      1つの構造体の中に、アライメント数が異なるメンバを記述することはできません。これに該当する場合はコンパイル時にウォーニングが出力されます。

 

  1. 構造体メンバにポインタアクセスをしていないか。
    構造体、共用体、クラスのメンバはポインタを用いてアクセスすることはできません。
    また、メンバ関数内でポインタを用いてアクセスすることはできません。

    これに該当する場合はコンパイル時にウォーニングが出力されないことがありますのでご注意ください。

 

適用製品

SuperH RISC engine ファミリ
SuperHファミリ用C/C++コンパイラパッケージ
他にご質問がございましたら、リクエストを送信してください