1

コンパイラは、変換ユニット全体で重複する定義をどのように検出しますか。ヘッダーファイルにexternconst変数宣言があったとします。
このヘッダーファイルが複数の変換ユニット(それぞれが個別の定義を持つ)で使用された場合、各TUオブジェクトの作成は成功しますが、最終的な実行可能ファイルが作成されるとエラーがスローされます。

これらのTUのそれぞれをリンクしている間(実行可能ファイルの作成中)にこれらの重複を説明するために作成された参照テーブルはありますか?

このトピックに関するリンクは役に立ちます。

よろしくお願いします。

4

2 に答える 2

0

はい、リンカーは未解決の外部参照のリストを作成し、最終的にそれらを 1 つずつ解決しようとします。

于 2010-04-28T18:29:02.997 に答える
0

通常、これはコンパイラではなくリンカによって検出されます。その後、リンカーは変数を結合するか (ずさんな C/C++ コーディングで必要になることがよくあります)、エラーを報告することができます。

于 2010-04-28T18:30:11.227 に答える