1.预处理命令(preprocessor dircetives):
预处理命令不是C语言的组成部分,不能直接对他们进行编译。必须在对程序进行通常的编译之前,先对程序中这些特殊的命令进行“预处理”,即根据于楚林命令对程序做相应的处理。经过预处理后程序不在包括预处理命令了,最后再由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。
1.1 宏定义:用一个指定的标识符来代表一个字符串
1.1.1 不带参数的宏定义,一般形式为:
#define 标识符 字符串
标识符又称“宏名”(一般用大写字母,未被分配存储空间),在预编译时将宏名替换成字符串的过程称为“宏展开”。该语句后面不加分号(因为它不是c语言语句)。该语句的作用域到本源文件结束,但
#undef
可以终止宏定义的作用域
再:对程序中用双引号括起来的字符串内的字符,即使与宏名相同,亦不替换。
1.1.2 带参数的宏定义,一般形式为:
#define 宏名(参数表) 字符串
例:
#define PI 3.1415926
#define S(a) PI * a * a
void main() {
float a, area;
a=3.6;
area=S(a);
printf("r=%f\narea=%f\n",a, area);
}
程序中:area=3.1415926 * a * a;
1.2 文件包含,语法如下:
#include "filename":现在当前目录下查找文件filename,未找到则去系统目录下查找
#include :直接在系统目录下查找
一个#include语句只能指定一个被包含文件,如果文件1包含文件2,文件2包含文件3,则可在文件1中用两个#include命令分别包含文件2和文件3,而且文件3应出现在文件2之前,文件1预处理命令如下:
#include "文件3"
#include "文件2"
1.3 条件编译
源程序中的一部分内容只在满足一定条件下才进行编译,形式如下:
#ifdef 标识符
程序段1
#else
程序段2
#endif
当指定的标识符已经被#define命令定义时,则在程序编译阶段只编译程序段1,否则编译程序段2.
#ifndef 标识符
程序段1
#else
程序段2
#endif
作用:若标识符未被定义过则编译程序段1,否则编译程序段2
#if 表达式
程序段1
#else
程序段2
#endif
当表达式为真时,编译程序段1;否则,编译程序段2。
阅读(1598) | 评论(2) | 转发(0) |