重温C语言之预处理命令

预处理命令:以“#”符号开头的编译指令(预处理命令属于C语言编译器)

预处理的主要作用:
1. 将源文件中以”#include”格式包含的文件复制到编译的源文件中
2. 用实际值替换使用”#define”定义的字符串
3. 根据”#if”后面的条件决定需要编译的代码

预处理命令:
1. “#define”:宏定义
2. “#include”:将另一源文件嵌入到带有”#include”的源文件中
3. “#error”:强迫停止编译,并输出错误信息。主要用于程序调试
4. “#if …#elif …#else …#endif”预编译分支指令。与C语言的if …else if …else ..语句类似,根据#if或#elif后面的常量表达式决定编译哪个分支代码
5. “#ifdef”:如果后面的常量已经被定义,则返回true,编译其后的代码
6. “#ifndef”:如果后面的常量未被定义,则返回true,编译其后的代码
7. “#undef”:撤销已定义的宏名
8. “#line”:改变预定义宏LINEFILE的内容
9. “#pragma”:使用该预处理命令可向编译器传送各种指令

ANSI C标准预定义了五个宏名,每个宏名的前后均有两个下划线。
1. “DATE“:当前源程序的创建日期
2. “FILE“:当前源程序的文件名称(包括盘符和路径)
3. “LINE“:当前被编译代码的行号
4. “STDC“:返回编译器是否为标准C,若其值为1表示符合标准C,否则不是标准C
5. “TIME“:当前源程序的创建时间

“#error”是产生错误信息命令
“#error”命令强制编译器停止编译,并输出一个错误信息。

修改编译器设置指令:#pragma
“#pragma”命令的作用是设定编译器的状态,或者指示编译器完成一些特定的动作。格式为”#pragma para“,para是参数,可用的参数有很多,例如:#pragma once :确保头文件被编译一次。

从C99开始,预处理中可以设置参数,看一个例子”#define debug(...) printf(__VA_ARGS__)“,其中,”…”代表一个可以变化的参数列表,使用保留名”__VA_ARGS__“把参数传递给宏。C99 引入了对参数个数可变的函数式宏的正式支持。在宏 `原型" 的末尾加上符号 ... (就像在参数可变的函数定义中), 宏定义中的伪宏VA_ARGS` 就会在调用是 替换成可变参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值