以“#”号开头的都是C语言中的预处理命令。一般都放在源文件的前面,是在对源程序正式编译前由预处理程序完成的。
所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能, 它由预处理程序负责完成。当对一个源文件进行编译时, 系统将自动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译。 具体解释如下: #define:宏定义命令,就是用一个标识符来表示一个字符串。 例如 #define MAX 100 那么,在代码中就可以使用标识符MAX来代替100这个具体的值(这个叫宏代换,宏展开),如果想修改,直接修改定义处的值,而代码不必改,便于程序的修改。 #include:文件包含命令,一个C程序可能需要一些函数原型的声明文件,或者多人开发的源程序,包含命令就是将这些文件内容引入到本源文件中,形成一个完整的C项目程序。例如 #include"math.h" 就是将数学公式函数的头文件包含进来,代码中才能调用一些数学公式。 #ifdef #else #endif #ifndef #undef:这些是相到关联的条件编译命令。可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。 这对于程序的移植和调试是很有用的。 例如: ifdef 标识符 程序段1 #else 程序段2 #endif 功能是,如果标识符已被 #define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(为空),则#else可以省略。 #ifndef 标识符 程序段1 #else 程序段2 #endif 与第一种形式的区别是将“ifdef”改为“ifndef”。它的功能是,如果标识符未被#define命令定义过则对程序段1进行编译, 否则对程序段2进行编译。这与第一种形式的功能正相反。 #line: 改变_LINE_ 与_ F I L E _的内容,它们是在编译程序中预先定义的标识符。命令的基本形式如下: # line number["filename"] 其中的数字为任何正整数,可选的文件名为任意有效文件标识符。行号为源程序中当前行号,文件名为源文件的名字。命令#line主要用于调试及其它特殊应用。 例如,下面说明行计数从100开始;printf()语句显示数102,因为它是语句#line 100后的第3行。 #line 100 /* 初始化行计数器* / main ( ) /* 行号100 */ { /* 行号101 */ printf("%d\n",_line_) ; /* 行号102 */ } |
|
来自: NaturalWill > 《C语言》