美文网首页
预处理指令(宏定义)

预处理指令(宏定义)

作者: silasjs | 来源:发表于2019-01-28 17:26 被阅读1次

    目录

    [toc]

    预处理指令

    什么是预处理指令:

    1. 在我们的文件翻译成0和1之前做的操作我们称之为预处理指令
    2. 一般情况下预处理指令都是以#号开头的

    宏定义

    不带参数的宏定义

    #define 宏名 值
    

    宏定义的作用:会在程序翻译成0和1之前,讲所有宏名替换为“宏的值”

    宏定义在什么时候替换:源代码->预处理->汇编->二进制->可执行程序

    • 宏定义的作用域
      • 从定义的那一行开始,一直到文件末尾
      • 虽然默认情况下,宏定义的作用域是从定义的那一行开始直到文件末尾。但是我们也可以通过对应的关键字提前结束宏定义的作用域。==#undef 宏名==

    注意:宏定义后面不要写“分号”

    带参数的宏定义

    #define 宏名((参数1), (参数2)) (参数1 + 参数2)
    
    • 带参数的宏定义注意点:
      • 一般情况下建议写带参数的宏的时候,给每个参数加上一个();
      • 一般情况下建议写带参数的宏的时候,给结果也加一个();

    条件编译

    int score = 100;
    
    #if score == 90
    //执行代码
    #else
    //执行代码
    #endif//作为结束符号
    
    • 注意:
      • 条件编译不能用来判断变量,因为不在同一个生命周期
      • 君生我未生,我生君已老
      • 一般情况下,条件编译是和宏定义结合在一起使用的
    #define SCORE 100
    
    #if SCORE == 90
    //执行代码
    #elif
    //执行代码
    #else
    //执行代码
    #endif//作为结束符号
    
    • 条件编译和选择结构if

      • 共同点
        • 都可以对给定的条件进行判断,添加满足或者不满足都可以执行特定代码
      • 区别
        1. 声明周期不同
          • if是在运行时
          • if是在编译之前

        2. if需要一个明确的结束符号:==#endif==

        3. 编译范围不同
          • if会将所有代码都编译到二进制中
          • if只会将满足条件的部分编译到二进制中

    • 条件编译的优点:

      1. 缩小应用程序的大小
      2. 方便调试

    文件包含

    相关文章

      网友评论

          本文标题:预处理指令(宏定义)

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