预处理器

C预处理器(preprocessor)在源代码编译之前对其进行一些文本性质的操作,它的主要任务包括删除注释,插入被#include指令包含的文件的内容,定义和替换由#define指令的符号以及确定代码的部分内容是否应该根据一些条件编译指令进行编译。

常用的预处理器符号:

符号

样例值

含义

__FILE__

“name.c”

进行编译的源文件名

__LINE__

25

文件当前行的行号

__DATE__

“Jan 31 1997”

文件被编译的日期

__TIME__

“18:04:30”

文件被编译的时间

__STDC__

1

如果编译器遵循ANSI C,其值就为1,否则为定义

宏与函数

宏用于非常频繁的执行简单的计算,比如在两个表达式中寻找其中的较大值的一个:

#define MAX(a, b)   ((a) > (b) ? (a) : (b));

为什么不用函数来完成这个任务呢?有两个原因,首先:用于调用和从函数返回的代码很可能比实际执行这个小型计算工作的代码更大,所以使用宏比较使用函数在程序中的规模和速度方面都更加胜一筹。

但是,更为重要的是,函数的参数必须声明为一种特定的类型,所以它只能再类型合适的表达式上使用,反之,上面的这个宏可以用于整形、长整形、单浮点型、双浮点型以及其他任何可以用的操作符比较值大小类型。

和使用函数相比,宏的不利之处在于每次使用宏时,一份定义代码的拷贝都将插入到程序中,除非宏非常短,否则使用宏可能会大幅增加程序的长度。


#undef name

这条预处理指令用于移除一个宏定义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值