2012-01-06 12 views
3

2つのファイル間でconst値を共有する必要がありました。私は魔法の数を保つのではなく、constという変数を使うことに決めました。 は、だから私は私のappDelegate.mglobal変数const int viewTag = 100;を作成した後extern const int viewTag;としてそれをアクセスするが、私は、リンカエラー、次しまっ:対物レンズ-Cの外部;彼らはCとは異なった振る舞いをしていますか?

Undefined symbols for architecture i386: 
"viewTag", referenced from: 
    -[xxxViewController launchxxx] in libxxx_iPad.a(xxxViewController.o) 
ld: symbol(s) not found for architecture i386 
collect2: ld returned 1 exit status 

をしかし、上記のものは、通常のC、C++のenvで完全に特定商取引あります。誰でも光を投げることができますか?

更新:ヘッダにextern const int viewTag;入れて、そのヘッダ作品をインポートするが、私は本当に単一const int

+1

を配置したい場所を私はあなたのアプリケーションのデリゲートのための.hファイルにそれを置くことは、リンカにそれを公開するようコンパイラーに指示推測含めることですか?とにかく、あなたの変数がviewTagと呼ばれるのであれば、それはなぜアプリケーションのデリゲートにありますか?ビューコントローラで定義する必要があります(または、理想的にはIBOutletとしてxibを使用して接続します) – deanWombourne

+0

ちょっと@deanWombourne、最上位/望ましいビューにパスコード画面を表示したいからです。 'viewTag'はそれを行うのに役立ちます。 –

+0

ビュータグを必要とせずにitsefをレンダリングする方法を知っていたパスコード画面のUIViewサブクラスを作成できますか? – deanWombourne

答えて

2

のために入れてみてくださいことを行うにはしたくない:appDelegate.h

extern const int viewTag; 

、これをインポートしますあなたはviewTagにアクセスする必要があります。

+0

申し訳ありません、私は上記の提案の作品を言及するのを忘れて、実際には私が現在行っていたものです。しかし、私は本当に単一の 'const int'のために' .h'をインポートしたくありません。 –

+0

グローバルに似たもののためにexternを使用するのは客観的なスタイルであることがよくありますが、多くのAppleヘッダーでexternを見つけることができます。 – petert

2

もう1つの方法は、.pchファイルで#define viewTag 100を使用することです。

しかし、私は考えて、最善の方法は、定数と.hファイルを作成し、

+0

.pchファイル内にある必要はありません。 –

+0

yaですが、 '.pch'を使うのは悪いです。小規模なプロジェクトではOKですが、 '.pch'で一行を変更すると、100 MBのソースコードがあります。すべてのアプリケーションを再コンパイルします;-( –

+0

私は、.hファイルを定数で作成し、欲しいです。 – Igor

関連する問題