web-dev-qa-db-ja.com

ヘッダーファイルで定数を宣言して初期化します

私は次の典型的なパラダイムに精通しています。

//.h
extern const int myInt;

//.c, .m, .cpp, what have you
const int myInt = 55;

しかし、それを.hファイルに入れて、ライブラリや実装ファイルにアクセスできない他のインスタンスで使用する方法が必要です。

たとえば、次のようにXcodeプロジェクトの.hファイルにNSString定数を追加しようとしています。

static NSString *const myString = @"my_string";

ただし、myStringを使用しようとすると、エラーが発生します

イニシャライザ要素はコンパイル時定数ではありません

myStringで、適切にインスタンス化されていないことを示します。 C++またはObjecitve-Cヘッダーファイルでコンパイル時定数をどのように宣言しますか?

14
Patrick Perini

C++では、constが明示的に宣言されていない限り、externオブジェクトには内部リンケージがあるため、次のようなヘッダーファイルに定義を入れることに問題はありません。

const int myInt = 55;

この定義と最初の宣言により、myIntは、配列の境界などの整数定数式として使用できます。

ObjectiveCには答えられません。

17
CB Bailey