我正在尝试在MSVC6上使用/ D编译器选项来定义一个字符串,但是在它周围使用双引号会有些奇怪。为了调试这个问题,能够看到预处理器实际上替换为扩展宏的代码的值是非常有帮助的。有什么方法可以做到这一点吗?我尝试使用“assembly and source”创建一个Listing文件,但是源包含原始宏名称,ASM在该行是一些难以理解的乱码。有没有办法在编译时获取宏值?
如果失败(或者更有用),如何使用/ D选项指定字符串?它需要在我的源代码中用双引号替换它,因为我将它用作字符串文字。
答案 0 :(得分:3)
对CL.exe尝试以下选项之一:
/E preprocess to stdout
/P preprocess to file
如果您在Visual Studio中构建,则可以在其中一个项目属性对话框中指定自定义命令行选项。
答案 1 :(得分:1)
MSVC有一个编译器标志,允许您查看预处理的源文件,其中扩展了所有宏,删除了注释等 - 整个翻译单元将根据将要编译的实际代码。预处理输出应该为您提供有关宏扩展的信息。更多信息here。
答案 2 :(得分:1)
可以选择传递给编译器(/P
),它会将预处理器输出写入my_cpp_file.i
,您可以在其中查看它。