跳转到主要内容

C语言预处理指令总结

judy 提交于

预处理指令是以#号开头的代码行,#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符,整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。

下面是本章涉及到的部分预处理指令:
<table>
<tbody>
<tr>
<th>指令</th>
<th>说明</th>
</tr>
<tr>
<td>#</td>
<td>空指令,无任何效果</td>
</tr>
<tr>
<td>#include</td>
<td>包含一个源代码文件</td>
</tr>
<tr>
<td>#define</td>
<td>定义宏</td>
</tr>
<tr>
<td>#undef</td>
<td>取消已定义的宏</td>
</tr>
<tr>
<td>#if</td>
<td>如果给定条件为真,则编译下面代码</td>
</tr>
<tr>
<td>#ifdef</td>
<td>如果宏已经定义,则编译下面代码</td>
</tr>
<tr>
<td>#ifndef</td>
<td>如果宏没有定义,则编译下面代码</td>
</tr>
<tr>
<td>#elif</td>
<td>如果前面的#if给定条件不为真,当前条件为真,则编译下面代码</td>
</tr>
<tr>
<td>#endif</td>
<td>结束一个#if……#else条件编译块</td>
</tr>
</tbody>
</table>

预处理功能是C语言特有的功能,它是在对源程序正式编译前由预处理程序完成的,程序员在程序中用预处理命令来调用这些功能。

宏定义可以带有参数,宏调用时是以实参代换形参,而不是“值传送”。

为了避免宏代换时发生错误,宏定义中的字符串应加括号,字符串中出现的形式参数两边也应加括号。

文件包含是预处理的一个重要功能,它可用来把多个源文件连接成一个源文件进行编译,结果将生成一个目标文件。

条件编译允许只编译源程序中满足条件的程序段,使生成的目标程序较短,从而减少了内存的开销并提高了程序的效率。

使用预处理功能便于程序的修改、阅读、移植和调试,也便于实现模块化程序设计。

转自: <a href="https://mp.weixin.qq.com/s/oaUWkciNLx1AiHQvr6LVRw">玩转单片机</a&gt;