码迷,mamicode.com
首页 > 其他好文 > 详细

预处理命令

时间:2015-01-19 22:23:49      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

转载自:http://www.cnblogs.com/kykuaileren/archive/2011/09/09/2172801.html
根据已放置在文件中的预处理指令来修改源文件的内容,预处理器会分析并执行所有的预处理指令,然后删除他们,得到一个仅包含C++语句的转换单元,预处理指令以“#”号开头

 

常见的预处理指令:

1、#include 包含头文件(头文件一般包含函数原型与全局变量)

形式常有下面两种

#include<iostream> 引用标准头文件,只搜索标准库头文件的默认目录

#include “myheader.h”

引用自定义的头文件,搜索正在编译的源文件所在的目录,找不到时再搜索包含标准库头文件的默认目录

2、#define 定义符号、宏

如:#define PI 3.1415925 // 定义符号常量PI为3.1415925,后面不加分号

在编译前,预处理器会遍历代码,在它认为置换有意义的地方,用字符串PI的定义值(3.1415925)来代替,在注释或字符串中的PI不进行替换

#undef删除#define定义的符号

如:

#define PI 3.14159265
......
// 之间所有的PI都可以被替换为3.14159265

#undef PI
//之后不再有PI这个标识符

但是在C++中最好使用const来定义变量,如上面的定义可改为:

const long double PI=3.1415925;

两者比较下,前者没有类型的指定,容易引起不必要的麻烦,而后者定义清楚,所以在C++中推荐使用const来定义常量

#define的缺点:

1)不支持类型检查

2)不考虑作用域

3)符号名不能限制在一个命名空间中

3、#indef,#ifndef,#endif

#ifdef 如果宏被定义就进行编译
#ifndef 如果宏未被定义就进行编译
#endif

结束编译块的控制

4、#if,#else

#if 表达式非零就对代码进行编译
#else 作为if为假的选项对代码进行编译

5、#error

输出一个错误信息

6、#pragma

为编译程序提供非常规的控制流信息

预处理命令

标签:

原文地址:http://www.cnblogs.com/jingkunchen/p/4234835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!