让vc和gcc生成预编译后的源文件

November 25, 2011 | 0 Minute Read

下载LOFTER我的照片书

有时一些宏很复杂,代码看起来不是很直观,可以配置vc让他生成经过处理后的吧宏替换后的代码。GCC也有类似的代码吧

在 “工程属性” —〉“C/C++”—〉“Project Options” 手工填入/P,然后rebuild,会产生于.cpp同名的.i文件,在这里宏被展开了。

vc2008中, 可以用上面安格办法,也可以直接在“c/c++” 里面的“Preprocessor” -> “Generate Preprocessed File” 选 /E /P 就可以了

详细参考看来自

http://msdn.microsoft.com/zh-cn/library/8z9z0bx6(v=VS.90).aspx

此文件具有与源文件相同的基名称和一个 .i 扩展名。在此过程中,执行所有的预处理器指令,执行宏展开,并移除注释。若要在预处理输出中保留注释,请将 /C(在预处理期间保留注释) 选项与 /P 一起使用。

/P 将 #line 指令添加到输出中,位于每个包含文件的开头和结尾以及被条件编译预处理器指令移除的行的周围。这些指令将预处理文件中的行重新编号。因此,在处理后期生成的错误引用原始源文件的行号而不是预处理文件中的行的行号。若要取消生成 #line 指令,请使用 /EP(不使用 #line 指令预处理到 stdout) 和 /P。

/P 选项取消编译。它不产生 .obj 文件,即使您使用 /Fo(对象文件名)。必须为编译重新提交预处理文件。/P 还可以从 /FA、/Fa(列表文件)、/FA、/Fa(列表文件) 和 /Fm(命名映射文件) 选项取消输出文件。

在 Visual Studio 开发环境中设置此编译器选项 打开此项目的“属性页”对话框。有关详细信息,请参见如何:打开项目属性页。

单击“C/C++”文件夹。

单击“预处理器”属性页。

修改“生成预处理文件”属性。

以编程方式设置此编译器选项 请参见 GeneratePreprocessedFile。

gcc 也有对应 -E -P 选项