预处理器
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(标识符)
#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(标识符)
相关文章推荐
- c++ 尽量不要使用#define 而是用const、enum、inline替换。
- 浅谈内联函数与宏定义的区别详解
- C语言中的内联函数(inline)与宏定义(#define)详细解析
- 基于C中含有if的宏定义详解
- 内联函数inline与宏定义深入解析
- C语言中宏定义使用的小细节
- C/C++宏定义的可变参数详细解析
- C语言编程技巧 关于const和#define的区别心得
- ios开发中,比较实用的全局宏定义分享
- 特殊的宏定义
- C语言 内联函数和宏定义
- typedef与define在用法上的区别
- iOS单列两种宏定义
- 2015年3月31日 开始
- C++内联函数与C语言宏的比较
- typedef和#define区别
- 操作系统和编译器宏定义
- 定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
- 20131012宏定义的补充说明
- 关于typedef int (*ADDPROC)(int a, int b)