首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

C语言之预处理命令

C语言之预处理命令

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 <filename>:直接在系统目录下查找

一个#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。
继承事业,薪火相传
返回列表