static, extern, const总结

概要

  • static:静态、局部。
  • extern:外部
  • const:常量
static

表示一个变量只在定义此变量的编译单元(如每个类的实现文件或者每个函数内),生命周期与代码的生命周期一样,如一个app结束运行,static定义的变量才会结束。

const

常量
NSString *const timeRun = @“VALUE”;表示timeRun指针不变

extern
extern NSString *const timeRun;

若编译器看到头文件中extern关键字,就能明白如何在引入此头文件的代码中处理该常量了。这个关键字告诉编译器,在全局符号表中会有一个名叫timeRun的符号。也就是说,编译器无须查看其定义,即允许代码使用此常量。因为它知道,当链接成二进制文件后,肯定能找到这个常量。
注意:如果在多个文件中同时出现extern定义的同名的变量,编译器会报错duplicate symbol XXX in:

static const与#define区别

定义常量时,尽量使用static const代替#define,因为:

  • 使用#define时,预处理指令定义常量不含类型信息,编译器只是会在编译前据此执行查找和替换操作。
  • 使用#define时,即使有人重新定义了常量值,编译器也不会产生警告信息,这将导致应用程序中的常量值不一样。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容