0

Objective-C アプリケーションにいくつかのグローバルが必要です。そのために、クラス Globals (NSObject を継承する) を作成し、読み取り専用プロパティをその中に入れました。次のように、いくつかの定数も宣言しました。

imports, etc.
.
.
.
#ifndef GLOBALS_H
#define GLOBALS_H

const int DIFFICULTY_CUSTOM = -1;
const int other_constants ...
#endif
.
.
.
interface, etc.

しかし、それをコンパイルしようとすると、リンカー エラーが発生します:「Duplicate symbol DIFFICULTY_CUSTOM」。なぜそれが起こっているのですか?

4

2 に答える 2

3

問題はconst int DIFFICULTY_CUSTOM = -1;、ヘッダーを含めるすべてのオブジェクト ファイルにその名前の int を割り当てることです。各ヘッダーに
は宣言のみを含める必要があります。extern const int DIFFICULTY_CUSTOM;実際の値はconst int DIFFICULTY_CUSTOM = -1;、1 つのオブジェクト ファイル (つまり .m または .c ) で定義する必要があります。

この場合、#define を使用して値を設定します。

于 2012-07-12T14:02:28.613 に答える
1

これが私がそれを行う方法です:

constants.m

const int DIFFICULTY_CUSTOM = -1;

constants.h

extern const int DIFFICULTY_CUSTOM;

および.pchファイル内:

#import "constants.h"
于 2012-07-12T14:05:49.147 に答える