您的位置:首页 > 其它

预处理器

2015-08-17 14:18 253 查看
预处理器的行为就是由预处理指令(由#字符开头的一些命令)控制的。 即#define和#include
#define指令定义了一个——用来代表其它东西的一个名字,如常量或常用的表达式。
#include指令告诉预处理器打开一个特定的文件,将它的内容作为正在编译的文件的一部分“包含”进来。

C程序处理流程:
C程序—>预处理器—>修改后的C程序—>编译器—>目标代码

宏定义:#define指令定义一个宏,#undef指令删除一个宏定义。文件包含:#include指令导致一个指定文件的内容被包含到程序中。条件编译:#if、#ifdef、#ifndef、#endif、#elif和#else

1. #if指令和#endif指令在调试一个程序时,若想要显示出特定变量的值,因此将printf函数调用添加到程序中重要的部分。一旦找到错误,经常需啊哟保留这些printf函数调用,以备以后使用。条件编译允许保留这些调用,但是让编译器忽略它们。采用下面的方式。首先定义一个宏,并给它一个非零的值:#define DEBUG 1宏的名字并不重要,在printf函数调用的前后加上#if和#endif:#if DEBUGprintf(“Value of i: %d\n”,i);#endif在预处理过程中,#if指令会测试DEBUG的值,为非0预处理器会将printf函数保留在程序中(但#if和 #endif行会消失);DEBUG值若为0,预处理器则会将这三行代码删除。#if指令会把没有定义过的标识符当做值为0的宏对待。
2. defined运算符 当defined应用于标识符时,若标识符时是一个定义过的宏则返回1,否则返回0.通常与#if结合使用:#if defined(DEBUG)...#endif仅当DEBUG被定义成宏时,#if和endif之间的代码会被保留在程序中。DEBUG两边的括号不是必须的,可以写成如下形式:#if defined DEBUG
3. #ifdef指令和#ifndef指令 #ifdef指令测试一个标识符是否已经定义为宏,它的使用和#if指令类似: #ifdef 标识符当标识符被定义为宏时需要包含的代码#endif #ifndef指令与#ifdef指令类似,但测试的事标识符是否没有被定义为宏:#ifndef 标识符 等价于 #if !defined(标识符)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息