预处理

预处理

 


1.宏定义 注意事项

#define 指令来定义明示常量(也叫作符号常量)

示例:

#define PX printf(“x is %d.\n”,x)

每行#define(逻辑行)都由3部分组成。

第一部分是#define指令本身。

第二部分是选定的缩写,称为宏。有些宏代表值,称为类对象宏。还有类函数宏。

第三部分称为替换列表或替换体

注意事项:   

(1)<宏名><字符串>要用空格隔开但宏的名称中不允许有空格

2)宏的名称必须遵守C变量的命名规则:只能使用字符、数字和下划线(_)字符,而且首字符不能是数字。习惯上用大写字母表示。

3)宏名如果没有使用#undef<标识符>取消宏定义,是不能重新对他进行宏定义

4)第三部分为替换体,不占内存,替换字符串中可以有空格

5)在嵌套循环中使用宏更有助于提高效率

6)宏较函数的不利在于,长的宏会大幅增加程序长度

 

 

 


 2.自定义函数 宏函数

示例:

#define MAX()({  \

          ...

})

函数调用:保存现场,转移到函数存放的地址,执行函数内容结束后,返回执行函数前的地方,恢复现场

宏函数:代码展开,无需如此繁复操作,高效

 

 

 

 

 

      

3.条件编译作用及如何使用

4.用条件编译防止头文件重复包含

告诉编译器根据编译时的条件执行或忽略信息(或代码)块

#ifdef 指令:#ifdef 标识符

如果预处理器已定义了后面的标识符,则执行#else#endif指令之前所有指令并编译所有C代码。

如果未定义后面的标识符,且有#else指令,则执行#else#endif指令之间的所有代码

示例:

#ifdef A

#include “a.h”//如果定义了A,则执行下面的指令

#define B 4

#else

#include “b.h”//如果没有定义A,则执行下面的指令

#define C 5

#endif

     

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值