美文网首页i看不完别走。。。iOS相关
宏与const区别 extern 和 static的区别

宏与const区别 extern 和 static的区别

作者: iOS_Ru | 来源:发表于2018-04-09 23:44 被阅读38次

    好多人开发久了,基本的一些东西都比较模糊了。
    我今天来讲讲宏与const的区别

        1.在编译时刻 宏:是预编译  const:在编译的时候
        2.编译检查  宏:不会检查错误  cons: 会做编译检查
        3.宏:可以定义代码
        4.宏的坏处: 编译时间过长   const只编译一次  大大减少编译时间  因此常用字符串常量用const
    
    这里讲一点:如果你想你的项目编译的快点,就不要把大量的字符串定义为宏,要学苹果 多用const 定义为只读常量 
    
    

    在讲讲他们的使用

    宏的使用

     1.常用的字符串定义为宏
     2.常用的代码用 宏
    

    const的使用

      1.仅仅用来修饰右边的变量(只能修饰变量: 基本变量,指针变量,对象变量)
       2.用const修饰的变量 表示只读变量 而不是常量
     在开发中的使用
        1.定义一个只读全局变量
        2.方法中定义只读参数
    

    关于const 修饰右边变量之谜
    其实很简单,主要记住 一个cosnt只能修饰一个变量(变量分为:基本变量,指针变量,对象变量)

       int const num = 20; 与   const int num = 20; 是没区别的 都是修饰基本变量num   num都不能修改
    
      int * const p = ∑ //  p: 是只读变量 *p:变量
      const int *p = ∑ // *p:只读变量  p 可以改;
      int const * const p = ∑ //*p p 都是只读
       const int * const p = ∑//*p p 都是只读
    
    搞懂上面四个语句 你就能搞清楚了
    
    

    const 和 static 连用

    表示 静态全局只读变量
    如:static NSString * const identifer = @"identifer";

    顺便说说 static 和 extern

     extern
        1.声明一个全局变量,不能定义变量
        注意:extern修饰的变量不能初始化
    
     static作用
     1.修饰局部变量
        *延长局部变量的生命周期  只要程序运行,局部变量就会一直存在
        *局部变量只会分配一次内存 为什么?用static修饰的代码,只会在程序一启动就会执行,以后就不会执行了
    (我猜想 如果想app启动快 尽量少定义static修饰的代码 不知道对不对)
     2.修饰全局变量
        *只会修改全局变量的作用域,表示只能在当前文件中使用
    

    一般开发中 也有 extern与 const的连用

    一般开发这么使用
    extern NSString *const AppKey;
    NSString *const AppKey = @"jurirj";
    
    但是切记要单独建一个 全局变量的文件 比如 globalConst文件
    里面放全部变量  防止不同的小伙伴定义的全局常量重名
    
    
    
    

    相关文章

      网友评论

        本文标题:宏与const区别 extern 和 static的区别

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