预处理 |
| |
|
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 |
|
|
|
预处理
最新推荐文章于 2024-08-05 20:38:57 发布