美文网首页
正确使用const、宏#define、extern三种方式

正确使用const、宏#define、extern三种方式

作者: 优雅地小男子 | 来源:发表于2018-04-18 16:41 被阅读40次

    1、const与宏 #define 的区别:

    1、编译时刻:宏是预编译(之前处理), const是编译阶段(之后处理)。
    2、编译检查:宏不做检查,有错误不会提示, const会检查,有错误会提示。
    3、宏的好处:宏能定义方法,const不能定义方法 只能用常量
    4、宏的坏处:大量使用宏,容易造成编译时间久。
    // 宏

    define DEMO @"www.baidu.com"

    2、static与const结合使用

    1、变量用来 static 与const声明了,如果试图修改由const修饰的变量,那么编译器就会报错。
    2、苹果官方不推荐我们使用宏, 推荐使用const常量。
    // 字符串常量
    static NSString * const demo = @"www.baidu.com";
    3、extern与const 结合使用

    在开发中需要在多个文件中经常使用同一个字符串常量,可以使用extern与const结合使用。
    1、static与const 结合:在每个文件都需要定义一份静态全局变量。
    2、extern与const结合:定义一份全局变量,多个文件都可以访问。

    有时候需要对外公开某个常量。比方说,你可能要在类代码中调用NSNotificationCenter以通知他人。用一个对象来派发通知,令其它欲接收通知的对象向该对象注册,这样就能实现此功能。
    .h文件
    extern NSString *const Demo;

    .m文件
    NSString *const Demo = @"www.baidu.com";

    这样定义常量要优于使用#define预处理指令,因为编译器会确保常量值不变。一旦 .m 文件中定义好了,即可随处使用,而采用预处理指令定义常量可能会无意中修改,从而导致应用程序各个部分使用的值互不相同。

    作者:侠永
    转载链接:https://www.jianshu.com/p/db1a0df38de7

    相关文章

      网友评论

          本文标题:正确使用const、宏#define、extern三种方式

          本文链接:https://www.haomeiwen.com/subject/laxbkftx.html