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

预处理指令(宏定义)

作者: 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. 方便调试

文件包含

相关文章

  • C语言 枚举类型和预处理指令

    枚举的定义 预处理指令 所有的预处理指令都是以#开头 预处理指令分为三种 宏定义 条件编译 文件包含 预处理指令在...

  • C语言预处理指令

    预处理指令 宏定义 宏定义会在预处理的时候, 用宏定义的值来替换宏的名称 格式: #define 宏名称 宏值 应...

  • 2017年10月19日学校总结

    今天学习了预处理指令,预处理指令包括宏定义,条件编译,文件包含 宏定义,不占用内存空间。 #define p 3....

  • iOS开发之宏定义的使用

    a、宏定义是预处理指令,所有的预处理指令以#开头 b、预处理指令的作用域是在编写指令的那一行开始,到文件的结尾结束...

  • c高级自我学习(1)

    1 编译预处理和宏定 #undef指令删除前面定义的宏定义。 无参宏定义:宏名中没有参数。 1,宏定义中宏名用来表...

  • Day12

    预处理指令 宏定义 基本格式 不带参数的宏定义 带参数的宏定义 宏定义的作用域 条件编译 基本格式 应用场景用来替...

  • 8.C语言 预处理指令

    所有预处理指令都是以#开头 预处理指令分三种 1> 宏定义:#define 纯粹的文本替换,而不进行运...

  • 编程基础

    C语言 #define定义的宏和const定义的常量有什么区别? defined定义宏的指令,程序在预处理阶段将用...

  • 预处理指令-宏定义

    宏定义 预处理指令简介 1.C语言在对源程序进行编译前, 会先对一些特殊的预处理指令作解释(比如之前使用的#inc...

  • 宏定义 预处理指令

    C语言提供的预处理指令主要有:宏定义、文件包含、条件编译 1.C语言在对源程序进行编译之前,会先对一些特殊的预处理...

网友评论

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

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