const 和宏 extern static

const 和宏的区别

  • 编译时刻: const 是编辑阶段的 而宏是与便于
  • 编译检查 : 宏不做检查不会编译错误只会替换 const 会编译检查会报变异错误度
  • 宏能够定义一些函数但是const 不可以
  • 大量的使用宏会导致编译时间过长,每次都会重新替换

const 的作用 (限制类型)

  • 仅仅用来修饰右边的变量
  • 被const 修饰的变量是只读类型的

static

可以 修饰局部变量

  • 局部变量只会生成一份,在内存中也只有一份,延长了变量的生命周期
  • 改变局部变量的作用域

    可以用来修饰全局变量

  • 避免重复定义全局变量
  • 全局变量只会生成一份在内存中也只有一份,只能在本文件中访问

extern

  • 只是用来获取全局变量的值,不用来定义变量extern 的工作原理: 在当前文件中查找有没有全局变量,没有找到才会去其他文件中进行查找
    // 全局变量: 只有一份内存

static 和const 联合使用

  • static 和const 联合使用声明一个静态的只读的变量
    eg1 static NSString const *key1 = @"name";
    eg2 static const float kTextSectionHeight = 50;

extern 和const 联合使用

  • 开发过程中如何多个文件经常使用一个通用的字符串,可以使用extern 和 const联合使用
    原因是:
    1 . static 和const 的组合需要在每一份文件里定义一个静态全局变量
    2 . extern 与const 的组合 只需要定义一份,多个文件可以共享
    需要注意的是全局常量的管理方法:开发中经常会有一个GlobeConst的文件,里面专门定义全局变量,用于同意管理

你可能感兴趣的:(const 和宏 extern static)