C++宏及条件编译
来源:互联网 发布:ubuntu官网下载 编辑:程序博客网 时间:2024/06/07 10:58
宏替换发生的时机
为了能够真正理解#define的作用,让我们来了解一下对C语言源程序的处理过程。当我们在一个集成的开发环境如Turbo C中将编写好的源程序进行编译时,实际经过了预处理、编译、汇编和连接几个过程。其中预处理器产生编译器的输出,它实现以下的功能:
(1)文件包含
可以把源程序中的#include 扩展为文件正文,即把包含的.h文件找到并展开到#include 所在处。
(2)条件编译
预处理器根据#if和#ifdef等编译命令及其后的条件,将源程序中的某部分包含进来或排除在外,通常把排除在外的语句转换成空行。
(3)宏展开
预处理器将源程序文件中出现的对宏的引用展开成相应的宏 定义,即本文所说的#define的功能,由预处理器来完成。
经过预处理器处理的源程序与之前的源程序有所有不同,在这个阶段所进行的工作只是纯粹的替换与展开,没有任何计算功能,所以在学习#define命令时只要能真正理解这一点,这样才不会对此命令引起误解并误用。
例子如下:
#ifndef PI
为了能够真正理解#define的作用,让我们来了解一下对C语言源程序的处理过程。当我们在一个集成的开发环境如Turbo C中将编写好的源程序进行编译时,实际经过了预处理、编译、汇编和连接几个过程。其中预处理器产生编译器的输出,它实现以下的功能:
(1)文件包含
可以把源程序中的#include 扩展为文件正文,即把包含的.h文件找到并展开到#include 所在处。
(2)条件编译
预处理器根据#if和#ifdef等编译命令及其后的条件,将源程序中的某部分包含进来或排除在外,通常把排除在外的语句转换成空行。
(3)宏展开
预处理器将源程序文件中出现的对宏的引用展开成相应的宏 定义,即本文所说的#define的功能,由预处理器来完成。
经过预处理器处理的源程序与之前的源程序有所有不同,在这个阶段所进行的工作只是纯粹的替换与展开,没有任何计算功能,所以在学习#define命令时只要能真正理解这一点,这样才不会对此命令引起误解并误用。
例子如下:
#ifndef PI
#define DOUBLEPI 3.14*2
#else
#define DOUBLEPI PI*2
#endif
阅读全文
0 0
- C语言条件编译及编译预处理
- C++宏及条件编译
- 【C语言】代码分析--条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- C语言条件编译及编译预处理阶段
- leetcode第一题twoSum
- C语言位域精解
- drawable的<bitmap/>标签实现图片复用repeatMode效果
- MySQL所使用的数据类型和范围
- 解决 eclipse 使用 SVN 更新多层文件结构提示 path.. is not a working copy
- C++宏及条件编译
- 2017年云栖大会———看阿里的社会责任与家国情怀
- Tarjan缩点+SPFA——缩点
- 根据已知二叉树的遍历顺序,求另一种遍历顺序
- Eclipse插件:mybatis generator的使用步骤
- 冒泡排序
- 基于iOS的网络音视频实时传输系统(三)- VideoToolbox编码音视频数据为H264、AAC
- win10 下 Laravel 虚拟开发环境 Homestead 安装教程
- 不同Activity之间传递数据,并改变UI