如何确定MSVC用于预处理器宏的值

时间:2009-08-27 16:17:43

标签: c++ macros c-preprocessor vc6

我正在尝试在MSVC6上使用/ D编译器选项来定义一个字符串,但是在它周围使用双引号会有些奇怪。为了调试这个问题,能够看到预处理器实际上替换为扩展宏的代码的值是非常有帮助的。有什么方法可以做到这一点吗?我尝试使用“assembly and source”创建一个Listing文件,但是源包含原始宏名称,ASM在该行是一些难以理解的乱码。有没有办法在编译时获取宏值?

如果失败(或者更有用),如何使用/ D选项指定字符串?它需要在我的源代码中用双引号替换它,因为我将它用作字符串文字。

3 个答案:

答案 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,您可以在其中查看它。