【问题标题】:Redefining Macros重新定义宏
【发布时间】:2012-10-19 14:09:36
【问题描述】:

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

-(void)viewDidLoad{

#undef kMacro
#define kMacro @"New Value"

}

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

【问题讨论】:

    标签: iphone objective-c macros


    【解决方案1】:

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

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

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

    const NSString* kMyString = @"New Value";
    

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

    【讨论】:

    • 声明应该是NSString * const kMyString,它是一个指向NSString的只读指针,而不是一个指向(冗余)只读NSString的(可重新分配的)指针。见stackoverflow.com/questions/2917941/…
    猜你喜欢
    • 2019-08-05
    • 2021-07-26
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多