C语言宏定义

#define 是C语言中的宏定义命令,在一定程度上提高程序的运行效率。它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。

它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。

在一个程序中,允许使用任意数量的#include命令行
#include命令行可以出现在程序文件的中间
在包含文件中,可以再包含其他文件
当包含文件被修改了,包含该文件的源程序需要重新进行编译和连接

该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。
1) 简单的宏定义:用指定的的标识符(宏名)代表一串字符。
#define  <宏名>  <字符串>

  1. 宏名的有效范围为该宏定义命令之后至本源文件结束。宏定义命令一般写在文件开头或函数之前。
  2. 可以用 #undef 命令终止宏定义的作用域。
  3. 进行宏定义时,可以引用已定义的宏名,层层置换。
  4. 对程序中用双引号括起来的字符串,即使与宏名相同,也不会置换。

2) 带参数的宏定义:
#define  <宏名>(<参数表>)  <宏体> 
注意:宏体应包含参数表中的参数

预处理

“编译预处理” 是 C 与其他高级语言的一个重要区别。他们主要是:

  • 宏定义
  • 文件包括
  • 条件编译

宏定义
1.宏定义不检查参数正确性,会有安全隐患
宏的嵌套定义过多会影响程序的可读性,而且很容易出错
2.相对于函数调用,宏定义可以提高程序的运行效率
3.const与#define最大的差别在于:前者在堆栈分配了空间,而后者只是把具体数值直接传递到目标变量罢了。或者说,const的常量是一个Run-Time的概念,他在程序中确确实实的存在可以被调用、传递。而#define常量则是一个Compile-Time概念,它的生命周期止于编译期:在实际程序中他只是一个常数、一个命令中的参数,没有实际的存在。
4.使用const比使用define有一下几种好处:
(1)const会进行数据类型检查,而define不会
(2)const效率高,因为const定义的常量,没有在内存中存储,而是在符号表中,每次访问这个数据的时候,少了从内存中读取和存储过程,效率高。
因此尽量还是使用const常量
文件包括
用 #include 命令实现一个文件包含另一个文件。
语句形式: #include “文件名”

条件编译
语句形式:

  1. #ifdef 宏名
    程序段1
    [#else
    程序段2]
    #endif

  2. #ifndef 宏名
    程序段1
    [#else
    程序段2]
    #endif

  3. #if 宏名
    程序段1
    [#else
    程序段2]
    #endif

  4. #if 宏名
    程序段1
    #elif 表达式2
    程序段2
    #else
    程序段3
    #endif

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值