当前位置:  开发笔记 > 编程语言 > 正文

查看编译器扩展代码 - C++

如何解决《查看编译器扩展代码-C++》经验,为你挑选了3个好方法。

我了解到编译器会在编译时扩展宏.模板也在编译时扩展.有没有办法看到这个扩展的代码?我正在使用Visual Studio 2008进行编译.

有什么想法吗?



1> Dave Ray..:

VC++编译器(cl.exe)支持一些命令行开关:

/E preprocess to stdout
/P preprocess to file
/EP preproscess to stdout with no #lines

可以在项目属性中添加其他命令行开关.在我的版本(VC2005)中,配置选项 - > C/C++ - >命令行 - >其他选项



2> Adam Hawes..:

编译器实际上没有进行任何宏扩展.这是预处理器的任务.这一切看起来都是一步,但编译器实际上会分配给单独的预处理器任务并为您捕获输出.

模板在编译时不会"扩展".它们在编译期间使用时进行实例化.不同之处在于编译器会立即为模板生成目标代码; 没有中间源代码出来.您不能将实例化的模板代码视为源代码,而是在需要时将其作为程序集转储出来.

如果你有GCC,你也可以使用带有正确参数的'cpp'直接调用预处理器(主要包括路径和命令行宏定义).其他人已经回答了MSVC.


它取决于编译器 - 预处理器就像在一个单独的阶段一样运行,但它不是强制性的,它是一个单独的程序.

3> peterchen..:

请注意,VC ++中的/ E仅扩展预处理程序语句(即#include,#ifdef,#define等)。

我不知道任何允许扩展模板的现代编译器。

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有