http://www.cppblog.com/ownwaterloo/archive/2009/04/16/get_result_of_preprocessing.html#_MSC_VER
编译C/C++源代码时,源代码首先会被预处理器(preprocessor)进行预处理(preprocess)。
预处理器执行源代码中的预处理指令 ,如:
——文件包含
#include
——条件编译
#if、 #ifdef、 #ifndef、 #elif、 #else、 #endif
——宏
#define、 #undef、宏标识符、宏扩展
——其他
#error、#line、#pragma
……
预处理之后的结果(即将提交给编译器)与程序员看到的源代码也许会有很大的差异 。
尤其在源代码中含有许多错综复杂的宏与条件编译时。
当我们被这些狂乱 的宏与条件编译折磨的时候, 如果能看到预处理的结果, 也许会有很大的帮助。
下面将以一个示例说明msvc与gcc中得到预处理结果的方式。
........