2016-11-11 3 views
0

コンパイラはオブジェクトファイルで構造体定義を使用できますか?私は-gのようなフラグをオンにしないと仮定します。cでコンパイルした後、オブジェクトファイルで構造体定義を使用できますか?

+1

構造体定義を含むソースコードからサンプルオブジェクトファイルをコンパイルし、定義が含まれているかどうかを確認してください。 – ForceBru

+0

それは必要ないため、おそらくそうではありません。 –

答えて

3

一般に、コードがコンパイルされると、Cは構造体定義には使用されません。コンパイラは、唯一xfooの先頭からのオフセット一定である特定のタイプのデータ項目があることを知っているアセンブリ言語に...

foo.x = 1; 

...このように、すべてのメンバーの参照を変換します。 (一部のハードウェアアーキテクチャでは、異なるアドレッシングメカニズムを使用することがありますが、概念的には同じです)。

個別のデバッグファイルではなく、オブジェクトファイルにデバッグシンボルを埋め込むコンパイラが存在する可能性があります。私はそのようなコンパイラを知らないが、存在する可能性がある。しかし、それはまったく同じことではありません。これらのシンボルはおそらくデバッガによってのみ読み込まれ、プログラム自体では使用できません。

関連する問題