1

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

-(void)viewDidLoad{

#undef kMacro
#define kMacro @"New Value"

}

它在此功能中运行良好。当我放入NSLog这个函数时,我得到“新值”。但是,我无法在这个函数之外或在其他类中获得这个新值。(我得到旧值)。是否可以将宏重新定义为全局?

4

1 回答 1

1

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

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

更好的是,不要使用宏并使用正确的 C:

const NSString* kMyString = @"New Value";

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

于 2012-10-19T15:39:40.740 回答