4

私は#pragma onceよく使用しますが、ヘッダーを処理する場合は正常に機能するようですが、何らかの理由で、次の場合に複数の定義のリンカーエラーが発生します。

#pragma once
int someVariable=5;

pragmaこれも防ぐべきではありませんか?

4

1 に答える 1

7

プラグマもこれを防ぐべきではありませんか?

いいえ、この場合、このヘッダーファイルが複数の場所にインクルードされていると、someVariableの複数の定義が作成されます。BhとChの両方にヘッドファイルが含まれている場合、2つのsomeVariableが作成されます。

より良い方法は、1つの.cppファイルのみで変数を定義しextern、他の場所で使用することです。

于 2013-01-20T08:30:50.260 に答える