您的位置:首页 > 编程语言 > C语言/C++

C++预处理器

2016-01-19 10:32 106 查看
预处理操作是发生在程序编译开始之前,对C++源代码进行一些简单的处理。

预处理器的任务如下:

1.解析#开始的命令,如下常用预处理命令

#include 在
程序中包含头文件

#if 条件

#else 否则

#elif 否则如果

#endif 结束条件

#ifdef 或 #if defined 如果定义了一个符号, 就执行操作

#ifndef 或 #if !defined 如果没有定义一个符号,就指执行操作

#define

定义符号、宏

#define的缺点:不支持类型检查;不考虑作用域符号名不能限制在一个命名
空间中。

#undef 删除一个符号

#line 重新定义当前行号和文件名,可以修改__FILE__返回的字符串,如下示例:

#line 1000 把当前行号设置为1000

#line 1000 "the program file" 修改__FILE__返回的字符串行号改为了1000,文件名改为了"the program file"

#line __LINE__ "the program file" 修改__FILE__返回的字符串行号没变,文件名改为了"the
program file"

#error 输出编译错误 消息, 停止编译。示例如下:

#ifndef __cplusplus

#error "Error - Should be C++"

#endif

#pragma 提供 机器专用的特性,同时保证与C++的完全兼容

2.删除注释

一些常用的预处理器宏如下:

__LINE__ 当前源文件中的代码行号,十进制整数

__FILE__  源文件的名称,字符串字面量

__DATE__  源文件的处理日期,字符串字面量,格式mmm dd yyyy其中mmm是月份如Jan、Feb等 dd是01-31 yyyy是四位的年份

__TIME__ 源文件的编译 时间,也是字符串字面量格式是hh:mm:ss

__STDC__ 这取决于实现方式,如果编译器选项设置为编译标准的C代码,通常就定义它,否则就不定义它

__cplusplus 在编译C++ 程序时,它就定义为199711L
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: