- ベストアンサー
型のバイト数はビルド時に全部決まりますか?
めちゃめちゃ根本的なことなのですがw (C++で)全ての型のバイト数は必ずビルド時(もっというとコンパイル時)に決定されるのでしょうか? (つまり、何バイトの整数型、何バイトの浮動小数型、とかいった分類でしかなくなるために、どのOSでも結果的にその部分は互換性が保たれる、ということなのでしょうか?) それとも、たとえばintが2バイトでも4バイトでも動作するように、コンパイル時には型情報(?)みたいなものが出来るだけで、実際のバイト数は実行時に計算されるのでしょうか? クラスや構造体がアラインメントに沿うように詰め物をされることとか、sizeofがtemplate内であれこれ使われてる状況を考えると、おそらく必ず前者ではないかと思うのですが…
お礼
ありがとうございます。 確かに言われてみればその通りですね。 とりあえず >どこまでの範囲を想定しているのかわかりませんが、ターゲットが異なれば互換性がないと考えるべきです。 最も知りたかったことはここなので、助かります。 ただ、他の部分はなるほどと思いましたが >オブジェクトへのポインタであっても型によってサイズが異なるといったこと この部分は知りませんでした。 具体的にはどのようなケースが存在するのでしょうか?