#importを使用すると、ビルドごとに1回だけファイルがインポートされるという印象を受けましたが、ヘッダーで変数を定義しようとした後、そのヘッダーを2つの異なるソースファイルにインポートすると、変数のシンボルリンカーリンカーエラーが重複します。これはどのように可能ですか?
質問する
3307 次
3 に答える
6
#import
ビルドごとではなく、ファイルごとに 1 回ヘッダーが含まれるようにします。したがって、変数はヘッダーをインポートするすべてのファイルで定義され、グローバル変数はプロジェクト全体でデフォルトで表示されるため、リンカーエラーが発生します。
グローバル変数を定義する正しい方法 (やりたい場合) は、実装ファイルで定義し、他のファイルでキーワード external を使用して参照することです。
また、ヘッダーの変数を静的として定義すると、その可視性が単一のファイルに制限されるため、エラーは発生しませんが、必要な結果にはならない可能性があります;)
于 2009-12-15T15:38:49.273 に答える
2
#import
「宣言」が1回だけ含まれるようにします。「定義」である変数を定義しているため、重複シンボルリンカーエラーが発生します。
このエラーを解決するには、宣言のみに .h を使用し、定義に .m を使用します。
ウラジミールが説明したように、 extern を使用できます
于 2009-12-16T04:28:14.920 に答える