2012-07-12 60 views
0

我的Objective-C應用程序中需要一些全局變量。爲此,我創建了類Globals(繼承NSObject)並將只讀屬性包含在其中。我還宣佈了一些常量,比如:Objective-C中的重複符號錯誤

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

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

但是當我嘗試編譯它,我收到鏈接錯誤:「重複的符號DIFFICULTY_CUSTOM」。爲什麼會發生這種情況,應該如果是的話?

+0

possib你在[你在哪裏聲明常量在目標C中?]的副本(http://stackoverflow.com/questions/6188672/where-do-you-declare-constant-in-objective-c) – Mark 2012-07-12 14:04:45

回答

3

問題是,const int DIFFICULTY_CUSTOM = -1;分配一個該名稱的int在每個包含標題的對象文件中。
您應該在每個標題中只有聲明extern const int DIFFICULTY_CUSTOM;。然後應該在一個目標文件(即.m或.c)中定義實際值const int DIFFICULTY_CUSTOM = -1;

在這種情況下,我只是使用#define來設置值。

1

以下是我會做:

constants.m

const int DIFFICULTY_CUSTOM = -1; 

constants.h

extern const int DIFFICULTY_CUSTOM; 

,並在.pch文件:

#import "constants.h"