C语言基础之预编译
2015-04-30 21:48
141 查看
预编译又称为预处理,是做些代码文本的替换工作,主要处理#开始的预编译指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等。主要记住这三个点就可以了!!!!!!!
(1)#include 指令 该指令指示编译器将xxx.xxx文件的全部内容插入此处。若用<>括起文件则在系统的INCLUDE目录中寻找文件,若用" "括起文件则在当前目录中寻找文件。一般来说,该文件是后缀名为"h"或"cpp"的头文件。 注意:<>不会在当前目录下搜索头文件,如果我们不用<>而用""把头文件名扩起,其意义为在先在当前目录下搜索头文件,再在系统默认目录下搜索。 (2)#define指令 该指令有三种用法: 第一种是定义标识,标识有效范围为整个程序,形如#define XXX,常与#if配合使用; 第二种是定义常数,如#define max 100,则max代表100(这种情况下使用const定义常数更好,原因见注1); 第三种是定义"函数",如#define get_max(a, b) ((a)>(b)?(a):(b)) 则以后使用get_max(x,y)就可以得到x和y中较大的数(这种方法存在一些弊病,见注2)。 第四种是定义"宏函数",如#define GEN_FUN(type) type max_##type(type a,type b){return a>b?a:b;} ,使用时,用GEN_FUN(int),则此处预编译后就变成了 max_int(int a,int b){return a>b?a:b;},以后就可以使用max_int(x,y)就可以得到x和y中较大的数.比第三种,增加了类型的说明。 (3)#if、#else和#endif指令 这些指令一般这样配合使用: #if defined(标识) //如果定义了标识 要执行的指令 #else 要执行的指令 #endif 在头文件中为了避免重复调用(比如说两个头文件互相包含对方),常采用这样的结构: #if !(defined XXX) //XXX为一个在你的程序中唯一的标识符, #define XXX #endif
相关文章推荐
- DirectX 3D_基础之HLSL(高级着色语言) HLSL着色器程序的编制 HSLS变量 HLSL入口函数 HLSL程序编译 变量常量类型 设置方法 前缀 关键字 类型 语句 类型转换
- c语言编程基础------1.c语言编译原理介绍
- 软考-程序设计语言基础(编译原理)
- JAVA语言基础——java的编译和运行
- C语言基础:多文件编译
- C#基础语言知识--编译和执行过程
- 软考-程序设计语言基础(编译原理)
- java语言基础(43)——带包名的类编译和运行
- C语言基础-复合类型数据,编译相关,关键字,位运算,内存管理,gdb调试
- Linux下C语言编译基础及makefile的编写
- java语言基础(33)——面向对象(父类中没有无参构造编译报错——无法将类 xxx中的构造器 xxx应用到给定类型 实际参数列表和形式参数列表长度不同)
- java语言学习之路之基础常识之java语言特点、开发工具、配置环境变量以及编译工具。
- c/c++语言基础——编译和链接
- C语言基础-08-预处理指令2-条件编译
- C语言基础:C语言宏定义(4) - 多文件编译
- 大前端开发者需要了解的基础编译原理和语言知识
- java语言学习之路之基础常识之java语言特点、开发工具、配置环境变量以及编译工具。
- 大前端开发者需要了解的基础编译原理和语言知识
- 黑马程序员——c语言基础:宏和条件编译
- 【编译原理】【语言基础】