在我的應用程序委託類我定義一個常量,像這樣:爲什麼我的'kMyConstant'宏被重新定義?
#define kSomeConstant @"My_Constant_Value"
然後我想利用這個不斷在另一個的viewController,所以我就像上面那樣再次定義它。我現在收到消息:
'kSomeConstant' macro redefined
爲什麼會出現這種情況?有沒有其他方法可以訪問常量?
在我的應用程序委託類我定義一個常量,像這樣:爲什麼我的'kMyConstant'宏被重新定義?
#define kSomeConstant @"My_Constant_Value"
然後我想利用這個不斷在另一個的viewController,所以我就像上面那樣再次定義它。我現在收到消息:
'kSomeConstant' macro redefined
爲什麼會出現這種情況?有沒有其他方法可以訪問常量?
只需重新定義常數(即:相同的常數名稱)。選擇另一個名稱,或在頭文件中只定義一次,以便在導入該頭文件的每個位置訪問常量值。
編譯器遇到了宏的兩個定義。可能您將其定義在頭文件中,然後在.m
文件中再次定義它。
如果您無法確定兩個定義來自哪裏,請嘗試使用該錯誤對文件進行預處理(在Xcode 4.2中,這在產品菜單中的生成輸出下)。然後,您可以搜索kSomeConstant,那應該告訴你它來自哪裏。
它很可能在編譯器可見的源代碼中定義了兩次。如果您更詳細地查看消息,編譯器可能會告訴您以前定義的位置。
要避免此問題完全,聲明你NSString
常數是這樣的:
extern NSString* const kSomeConstant;
NSString* const kSomeConstant = @"My_Constant_Value";
然後當你需要使用常數時,只需#include "file.h"
。
您是否在視圖控制器中導入了您的應用程序委託標題?如果你是,宏已經定義了,所以這個錯誤。因此你不需要額外的'#define',你可以使用常量。 – paulbailey 2011-12-19 13:57:52