重新定义宏

时间:2012-10-19 14:09:37

标签: iphone objective-c macros

在我的应用程序中,我必须重新定义一个宏。我确实喜欢这个。

-(void)viewDidLoad{

#undef kMacro
#define kMacro @"New Value"

}

这个功能正常。当我将NSLog置于此函数中时,我获得了“新值”。但是,我不能在这个函数之外或其他类中获得这个新值。 (我得到了旧价值)。是否可以将宏重新定义为全局?

1 个答案:

答案 0 :(得分:1)

当您在文件中重新定义宏时,它仅对该文件有效,因为所有文件都被视为单独的编译单元。

要让它在其他类中工作,您需要放入一个头文件,并在所有要使用它的文件中#import。

更好的是,不要使用宏并使用适当的C:

const NSString* kMyString = @"New Value";

然后您可以在其他.m文件中将其作为普通外部变量进行访问。