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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • static 修饰局部变量 让局部变量只初始化一次 局部变量在程序中只有一份内存 并不会改变局部变量的作用域,仅仅...
    大冲哥阅读 1,389评论 0 1
  • 一、const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们...
    CoderZS阅读 318评论 0 4
  • static 修饰局部变量 1.让局部变量只初始化一次 2.局部变量在程序中只有一份内存 3.并不会改变局部变量的...
    千寻_544f阅读 2,367评论 0 0
  • 古道每周都走,会不会腻? 怎么会?只要你有双擅长发现的眼睛,每天的古道都是新的。听听孩子们都发现了...
    爱自然的云朵阅读 676评论 2 2
  • 还有不到一个小时左右,我就要跟二十岁的自己say hi了,十九岁的我有点小紧张,有点小不舍又有点小期待…天呐...
    煜梦_阅读 457评论 0 0