<?xml version="1.0" encoding="gbk"?> <rss version="2.0"><channel> <title>定阅帖子更新</title> <link>http://www.broadkey.com.cn/XML.ASP</link><description>TEAM Board - 科伟奇电子</description> <copyright>TEAM 2.0.5 Release</copyright><generator>TEAM Board by TEAM5.Cn Studio</generator> <ttl>30</ttl><item><link>http://www.broadkey.com.cn/Thread.asp?tid=435 </link><title>C语言中的编译预处理命令详解</title><author>会飞的鱼</author><pubDate>2009/12/15 11:32:08</pubDate><description><![CDATA[<div>
<div style="line-height: 20pt"><strong><span style="font-size: 12pt">1</span></strong><strong><span style="font-size: 12pt">、概述</span></strong></div>
<div style="line-height: 20pt; text-indent: 21pt"><span style="font-size: 12pt">C</span><span style="font-size: 12pt">编译系统在对程序进行通常的编译之前，先进行预处理。</span><span style="font-size: 12pt">C</span><span style="font-size: 12pt">提供的预处理功能主要有以下三种：</span></div>
<div style="line-height: 20pt; text-indent: 21pt"><span style="font-size: 12pt">(1) </span><span style="font-size: 12pt">宏定义</span></div>
<div style="line-height: 20pt; text-indent: 21pt"><span style="font-size: 12pt">(2) </span><span style="font-size: 12pt">文件包含</span></div>
<div style="line-height: 20pt; text-indent: 21pt"><span style="font-size: 12pt">(3) </span><span style="font-size: 12pt">条件编译</span></div>
<div style="line-height: 20pt; text-indent: 21pt"><span style="font-size: 12pt">上述三种功能分别用宏定义命令、文件包含命令、条件编译命令来实现。由于预处理命令不是</span><span style="font-size: 12pt">C</span><span style="font-size: 12pt">语句，为了和一般的</span><span style="font-size: 12pt">C</span><span style="font-size: 12pt">语句相区分，这些命令以符号&ldquo;</span><span style="font-size: 12pt">#</span><span style="font-size: 12pt">&rdquo;开头。</span></div>
<div style="line-height: 20pt"><strong><span style="font-size: 12pt">2</span></strong><strong><span style="font-size: 12pt">、宏定义</span></strong></div>
<div style="line-height: 20pt"><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1) </span><span style="font-size: 12pt">不带参数的宏定义：用一个指定的标识符</span><span style="font-size: 12pt">(</span><span style="font-size: 12pt">即名字</span><span style="font-size: 12pt">)</span><span style="font-size: 12pt">来代替一个字符串，它的一般形式为</span></div>
<div style="line-height: 20pt"><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>#define </em></span><em><span style="font-size: 12pt">标识符</span></em><em><span style="font-size: 12pt">字符串</span></em></div>
<div style="line-height: 20pt"><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt">说明：</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">宏名一般习惯用大写字母表示，以便与变量名相区别；</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">使用宏名代替一个字符串，可以减少程序中重复书写某些字符串的工作量；</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">宏定义是用宏名代替一个字符串，也就是作简单的替换，预编译时不作正确性检查，只有在编译已被宏展开的源程序时才会发现错误并报错；</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">宏定义不是</span><span style="font-size: 12pt">C</span><span style="font-size: 12pt">语句，不必在行末加分号。如果加了分号则会连分号一起进行置换；</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><em><span style="font-size: 12pt">#define </span></em><span style="font-size: 12pt">命令出现在程序中函数的前面，宏名的有效范围为定义命令之后到本源文件结束。</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">可用</span><em><span style="font-size: 12pt">#undef</span></em><span style="font-size: 12pt">命令终止宏定义的作用域；</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">在进行宏定义时，可以引用已定义的宏名，可以层层置换；</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">对程序中用双引号括起来的字符串内的字符，即使与宏名相同，也不进行置换；</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">宏定义是专门用于预处理命令的一个专用名词，它与定义变量的含义不同，只作字符替换，不分配内存空间。</span></div>
<div style="line-height: 20pt; text-indent: 21pt"><span style="font-size: 12pt">(2) </span><span style="font-size: 12pt">带参数的宏定义：不是进行简单的字符串替换，还要进行参数替换。其定义的一般形式为</span></div>
<div style="line-height: 20pt; text-indent: 21pt"><em><span style="font-size: 12pt">#define </span></em><em><span style="font-size: 12pt">宏名</span></em><em><span style="font-size: 12pt">(</span></em><em><span style="font-size: 12pt">参数表</span></em><em><span style="font-size: 12pt">) </span></em><em><span style="font-size: 12pt">字符串</span></em></div>
<div style="line-height: 20pt; text-indent: 21pt"><span style="font-size: 12pt">字符串中包含在括号中指定的参数。</span></div>
<div style="line-height: 20pt; text-indent: 21pt"><span style="font-size: 12pt">说明：</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">对带参数的宏的展开只是将语句中的宏名后面括号内的实参字符串代替</span><em><span style="font-size: 12pt">#define</span></em><span style="font-size: 12pt">命令行中的形参。</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">在宏定义时，在宏名与带参数的括号之间不应加空格，否则将空格以后的字符都作为替代字符串的一部分。</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">带参数的宏定义与函数的区别：</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">函数调用时，先求出实参表达式的值，然后代入形参；而是用带参数的宏只是进行简单的字符替换。</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">函数调用是在程序运行时处理的，分配临时的内存单元；而宏展开则是在编译时进行的，在展开时并不分配内存单元，不进行值的传递处理，也没有返回值的概念。</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">对函数中的实参和形参都要定义类型，二者的类型要求一致，如不一致应进行类型转换；而宏不</span><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt">存在类型问题，宏名无类型，它的参数也无类型，只是一个符号代表，展开时代入指定的字符即可。宏定义时，字符串可以是任何类型的数据。</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">调用函数时只可得到一个返回值，而用宏可以设法得到几个结果。</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">使用宏次数多时，宏展开后源程序长，因为每展开一次都使程序增长；而函数调用不使源程序变长。</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">宏替换不占运行时间，只占编译时间；而函数调用则占运行时间</span><span style="font-size: 12pt">(</span><span style="font-size: 12pt">分配单元、保留现场、值传递、返回</span><span style="font-size: 12pt">)</span><span style="font-size: 12pt">。</span></div>
<div style="line-height: 20pt"><strong><span style="font-size: 12pt">3</span></strong><strong><span style="font-size: 12pt">、&ldquo;文件包含&rdquo;处理</span></strong></div>
<div style="line-height: 20pt"><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt">所谓&ldquo;文件包含&rdquo;处理是指一个源文件可以将另外一个源文件的全部内容包含进来，即将另外的文件包含到本文件之中。</span><span style="font-size: 12pt">C</span><span style="font-size: 12pt">语言提供了</span><em><span style="font-size: 12pt">#include</span></em><span style="font-size: 12pt">命令来实现&ldquo;文件包含&rdquo;的操作。其一般形式为</span></div>
<div style="line-height: 20pt"><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>#include</em></span><em><span style="font-size: 12pt">&ldquo;文件名&rdquo;</span></em></div>
<div style="line-height: 20pt"><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt">或</span></div>
<div style="line-height: 20pt"><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em>#include&lt;</em></span><em><span style="font-size: 12pt">文件名</span></em><em><span style="font-size: 12pt">&gt;</span></em></div>
<div style="line-height: 20pt"><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt">说明：</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">一个</span><em><span style="font-size: 12pt">include</span></em><span style="font-size: 12pt">命令只能指定一个被包含文件，如果要包含</span><em><span style="font-size: 12pt">n</span></em><span style="font-size: 12pt">个文件，要用</span><em><span style="font-size: 12pt">n</span></em><span style="font-size: 12pt">个</span><em><span style="font-size: 12pt">include</span></em><span style="font-size: 12pt">命令。</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">如果文件</span><span style="font-size: 12pt">1</span><span style="font-size: 12pt">包含文件</span><span style="font-size: 12pt">2</span><span style="font-size: 12pt">，而文件</span><span style="font-size: 12pt">2</span><span style="font-size: 12pt">要用到文件</span><span style="font-size: 12pt">3</span><span style="font-size: 12pt">的内容，则可在文件</span><span style="font-size: 12pt">1</span><span style="font-size: 12pt">中用两个</span><span style="font-size: 12pt">include</span><span style="font-size: 12pt">命令分别包含文件</span><span style="font-size: 12pt">2</span><span style="font-size: 12pt">和文件</span><span style="font-size: 12pt">3</span><span style="font-size: 12pt">，而且文件</span><span style="font-size: 12pt">3</span><span style="font-size: 12pt">应该出现在文件</span><span style="font-size: 12pt">2</span><span style="font-size: 12pt">之前。这样，如果文件</span><span style="font-size: 12pt">2</span><span style="font-size: 12pt">只被文件</span><span style="font-size: 12pt">1</span><span style="font-size: 12pt">包含而不会出现在其它场合，则在文件</span><span style="font-size: 12pt">2</span><span style="font-size: 12pt">中无须再包含</span><span style="font-size: 12pt">3</span><span style="font-size: 12pt">。</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">在一个被包含文件中又可以包含另一个被包含文件，即文件包含是可以嵌套的。</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">被包含文件与其所在的文件在预编译后已成为同一个文件</span><span style="font-size: 12pt">(</span><span style="font-size: 12pt">而不是两个文件</span><span style="font-size: 12pt">)</span><span style="font-size: 12pt">，因此，如果被包含文件中有全局静态变量，它也在包含它的文件中有效，不必用</span><em><span style="font-size: 12pt">extern</span></em><span style="font-size: 12pt">声明。</span></div>
<div style="line-height: 20pt; margin: 0cm 0cm 0pt 21pt"><span style="font-size: 12pt">?<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 12pt">在</span><span style="font-size: 12pt">#include</span><span style="font-size: 12pt">命令中，文件名可以用双引号或尖括号括起来，二者都是合法的。其区别是用尖括号时，系统到存放</span><span style="font-size: 12pt">C</span><span style="font-size: 12pt">库函数头文件所在的目录中寻找要包含的文件，这称为标准形式。用双引号时，系统先在用户当前目录中寻找要包含的文件，如找不到，再按标准方式查找。一般来说，调用库函数时用尖括号包含相关头文件以节约查找时间，调用用户编写的头文件</span><span style="font-size: 12pt">(</span><span style="font-size: 12pt">要放在当前目录下</span><span style="font-size: 12pt">)</span><span style="font-size: 12pt">一般用双引号。</span></div>
<div style="line-height: 20pt"><strong><span style="font-size: 12pt">4</span></strong><strong><span style="font-size: 12pt">、条件编译</span></strong></div>
<div style="line-height: 20pt"><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt">一般情况下，源程序中所有的行都参加编译，但有时希望对其中一部分内容只在满足一定条件才进行编译，也就是对其中一部分内容指定编译的条件，这就是&ldquo;条件编译&rdquo;。条件编译有以下几种形式：</span></div>
<div style="line-height: 20pt"><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1) <em>#ifdef </em></span><em><span style="font-size: 12pt">标识符</span></em></div>
<div style="line-height: 20pt"><em><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></em><em><span style="font-size: 12pt">程序段</span></em><em><span style="font-size: 12pt">1</span></em></div>
<div style="line-height: 20pt"><em><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; #else</span></em></div>
<div style="line-height: 20pt"><em><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></em><em><span style="font-size: 12pt">程序段</span></em><em><span style="font-size: 12pt">2</span></em></div>
<div style="line-height: 20pt"><em><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; #endif</span></em></div>
<div style="line-height: 20pt"><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt">它的作用是当指定的标识符已经被</span><em><span style="font-size: 12pt">#define</span></em><span style="font-size: 12pt">命令定义过，则在程序编译阶段只编译程序段</span><span style="font-size: 12pt">1</span><span style="font-size: 12pt">，否则编译程序段</span><span style="font-size: 12pt">2</span><span style="font-size: 12pt">。其中</span><em><span style="font-size: 12pt">#else</span></em><span style="font-size: 12pt">部分可以没有。</span></div>
<div style="line-height: 20pt; text-indent: 21pt"><span style="font-size: 12pt">(2) <em>#ifndef </em></span><em><span style="font-size: 12pt">标识符</span></em></div>
<div style="line-height: 20pt"><em><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></em><em><span style="font-size: 12pt">程序段</span></em><em><span style="font-size: 12pt">1</span></em></div>
<div style="line-height: 20pt; text-indent: 36pt"><em><span style="font-size: 12pt">#else</span></em></div>
<div style="line-height: 20pt"><em><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></em><em><span style="font-size: 12pt">程序段</span></em><em><span style="font-size: 12pt">2</span></em></div>
<div style="line-height: 20pt"><em><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;#endif</span></em></div>
<div style="line-height: 20pt; text-indent: 21pt"><span style="font-size: 12pt">它的作用是若标识符未被定义过则编译程序段</span><span style="font-size: 12pt">1</span><span style="font-size: 12pt">，否则编译程序段</span><span style="font-size: 12pt">2</span><span style="font-size: 12pt">。</span></div>
<div style="line-height: 20pt; text-indent: 21pt"><span style="font-size: 12pt">(3) <em>#if </em></span><em><span style="font-size: 12pt">表达式</span></em></div>
<div style="line-height: 20pt"><em><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></em><em><span style="font-size: 12pt">程序段</span></em><em><span style="font-size: 12pt">1</span></em></div>
<div style="line-height: 20pt; text-indent: 36pt"><em><span style="font-size: 12pt">#else</span></em></div>
<div style="line-height: 20pt"><em><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></em><em><span style="font-size: 12pt">程序段</span></em><em><span style="font-size: 12pt">2</span></em></div>
<div style="line-height: 20pt"><em><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;#endif</span></em></div>
<div style="line-height: 20pt"><span>&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt">它的作用是当指定的表达式值为真</span><span style="font-size: 12pt">(</span><span style="font-size: 12pt">非零</span><span style="font-size: 12pt">)</span><span style="font-size: 12pt">时就编译程序段</span><span style="font-size: 12pt">1</span><span style="font-size: 12pt">，否则编译程序段</span><span style="font-size: 12pt">2</span><span style="font-size: 12pt">。</span></div>
<div style="line-height: 20pt"><span style="font-size: 12pt">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 12pt">虽然直接用</span><em><span style="font-size: 12pt">if</span></em><span style="font-size: 12pt">语句也可以达到要求，但是用条件编译可以减少被编译的语句，从而减少目标程序的长度，减少运行时间。</span></div>
</div>]]></description></item></channel></rss>