1
在我的應用程序中,我必須重新定義一個宏。我喜歡這個。重新定義宏
-(void)viewDidLoad{
#undef kMacro
#define kMacro @"New Value"
}
它在這個函數中工作正常。當我把NSLog
放到這個函數中時,我會得到「新值」。但是,我無法在這個功能之外或其他類別中獲得這個新值。 (我正在獲得舊價值)。是否有可能將宏重新定義爲全局?
在我的應用程序中,我必須重新定義一個宏。我喜歡這個。重新定義宏
-(void)viewDidLoad{
#undef kMacro
#define kMacro @"New Value"
}
它在這個函數中工作正常。當我把NSLog
放到這個函數中時,我會得到「新值」。但是,我無法在這個功能之外或其他類別中獲得這個新值。 (我正在獲得舊價值)。是否有可能將宏重新定義爲全局?
當您重新定義文件中的宏時,它僅對該文件有效,因爲所有文件都被視爲單獨的編譯單元。
要使其在其他類中工作,您需要將其放入一個頭文件中,並將其導入到您要使用的所有文件中。
更妙的是,不要使用宏和使用適當的C:
const NSString* kMyString = @"New Value";
,然後您可以訪問它在其他.m文件,普通的外部變量。
該聲明應該是'NSString * const kMyString',它是一個只讀指向'NSString'的指針,而不是一個(可重新分配的)指向一個(冗餘)只讀'NSString'的指針。見http://stackoverflow.com/questions/2917941/how-to-declare-nsstring-constants-for-passing-to-nsnotificationcenter –