预处理命令

来源:互联网 发布:中国移动电视网络页面 编辑:程序博客网 时间:2024/06/05 09:40

1、预处理命令不是C语言的语法成分,而是传递给编译程序的各种指令。C语言的预处理命令包括:

(1)宏定义:

#define

#undef

(2)文件包括:

#include

(3)条件编译:

#if

#ifdef

#else

#elif

#endif

(4)其他:

#line

#error

#pragma


2、宏定义分为两种:不带参数的宏定义 和 带参数的宏定义

(1)不带参数的宏定义:

(1.1)#define指令定义一个标识符来代表一个字符串,在源程序中发现该标识符时,都用该字符串进行替换,以形成新的源程序。这种标识符称为宏名(macro name),替换过程称为宏替换(macro substitution)。宏替换的操作是在预编译时进行的。

(1.2)一般定义形式:

#define标识符 单词串

(1.3)注意:

a、宏一般不能用分号结尾,除非程序员特意这么做;

b、通常用大写字母来定义宏,以便与变量名区别;

c、宏替换仅仅是简单的替换,不对宏定义的文本进行任何处理;

d、宏定义时,如果单词串很长,应使用续行符“\ ”;

e、宏一般定义在文件的开头部分,一直到文件结尾,如需提前结束,可以使用#undef命令;

f、宏定义可以嵌套定义,但是不可以递归定义;

g、宏可以被重复定义;

h、宏定义时,表达式加上括号。

(2)带参数的宏定义:

(2.1)带参数的宏定义的一般形式(注意:标识符与圆括号之间不能有空格):

#define标识符(参数列表) 单词串


3、文件包含主要是<>与“”的区别,此处省略不表;


4、条件编译:一般情况下,程序中的所有代码都参加编译,但是有时候也希望根据一定的条件(譬如程序版本)去编译源文件的不同部分,这就是条件编译。

几种常用的条件编译形式:

(1)#if ...#endif形式:

#if条件1

程序段1

#elif条件2

程序段2

.

.

.

#else

程序段n

#endif


(2)#ifdef ...#endif形式:

#ifdef宏名

程序段1

#else

程序段2

#endif


(3)#ifndef ...#endif形式:

#ifdef宏名

程序段1

#else

程序段2

#endif


0 0