【vc++精品源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了vc++精品源码-C语言预处理命令总结 - 其它资料的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
C 语言预处理命令总结大全 2012-02-13 17:18标签: C 语言 预处理 分类: C 编程C 程序的源代码中可包括各种编译指令,这些指令称为预处理命令。
虽然它们实际上不是 C 语言的一部分,但却扩展了 C 程序设计的环境。
本节将介绍如何应用预处理程序和注释简化程序开发过程,并提高程序的可读性。
ANSI 标准定义的 C语言预处理程序包括下列命令: define,error,#include,if,else,elif,endif,ifdef,ifndef,undef,line,pragma 等。
非常明显,所有预处理命令均以符号开头,下面分别加以介绍。
一 define 命令define 定义了一个标识符及一个串。
在源程序中每次遇到该标识符时,均以定义的串代换它。
ANSI 标准将标识符定义为宏名,将替换过程称为宏替换。
命令的一般形式为: define identifier string 注意: 1 该语句没有分号。
在标识符和串之间可以有任意个空格,串一旦开始,仅由一新行结束。
2 宏名定义后,即可成为其它宏名定义中的一部分。
3 宏替换仅仅是以文本串代替宏标识符,前提是宏标识符必须独立的识别出来,否则不进行替换。
例如: define XYZ this is a tes 使用宏 printfquotXYZquot;//该段不打印quotthis is a testquot而打印quotXYZquot。
因为预编译器识别出的是quotXYZquot 4 如果串长于一行,可以在该行末尾用一反斜杠 续行。
defineLONG_STRINGquotthis is a very long string that is used as an examplequot 5 C 语言程序普遍使用大写字母定义标识符。
6 用宏代换代替实在的函数的一大好处是宏替换增加了代码的速度 ,因为不 存在函数调用的开销。
但增加速度也有代价:由于重复编码而增加了程序长 度。
二 error 命令error 强迫编译程序停止编译,主要用于程序调试。
error 指令使预处理器发出一条错误消息,该消息包含指令中的文本.这条指令的目的就是在程序崩溃之前能够给出一定的信息。
三 include 命令#i nclude 使编译程序将另一源文件嵌入带有#include 的源文件,被读入的源文件必须用双引号或尖括号括起来。
例如: #includequotstdio.hquot或者#includeltstdio.hgt 这两行代码均使用 C 编译程序读入并编译用于处理磁盘文件库的子程序。
将文件嵌入#i nclude 命令中的文件内是可行的,这种方式称为嵌套的嵌入文件,嵌套层次依赖于具体实现。
如果显式路径名为文件标识符的一部分,则仅在那些子目录中搜索被嵌入文件。
否则,如果文件名用双引号括起来,则首先检索当前工作目录。
如果未发现文件,则在命令行中说明的所有目录中搜索。
如果仍未发现文件,则搜索实现时定义的标准目录。
如果没有显式路径名且文件名被尖括号括起来,则首先在编译命令行中的目录内检索。
如果文件没找到,则检索标准目录,不检索当前工作目录 。
四 条件编译命令 有几个命令可对程序源代码的各部分有选择地进行编译,该过程称为条件编译。
商业软件公司广泛应用条件编译来提供和维护某一程序的许多顾客版本。
if、else,elif 及endif if 的一般含义是如果if 后面的常量表达式为 true,则编译它与endif 之间的代码,否则跳过这些代码。
命令endif 标识一个if 块的结束。
if constant-expression statement sequence endif Eg: define MAX 91 include ltiostreamgt using namespace std int main if MAX gt 99 coutltltquotMAX is bigger than 99quotltltendl elif MAX gt 90 coutltltquotMAX is bigger than 90quotltltendl else coutltltquotMAX is smaller than 90quotltltendl endif return 0 跟在if 后面的表达式在编译时求值,因此它必须仅含常量及已定义过的标识符,不可使用变量。
(sizeof 也是编译时求值) 表达式不许含有操作符 sizeof 。
else 命令的功能有点象 C 语言中的 else;else 建立另一选择(在if 失败的情况下)。
注意,else 属于if 块。
elif 命令意义与 ELSE IF 相同,它形成一个