我试图使用MSVC6上的一个/ D编译器选项来定义一个字符串,但是围绕它使用双引号有些奇怪。为了调试这个问题,我能够看到预处理器实际上代替了扩展宏的代码的价值。有什么办法可以做到这一点?我试图创建一个带有“汇编和源代码”的清单文件,但是源代码包含原始的宏名称,而ASM在那一行是一些难以理解的乱码。有没有办法在编译时获得宏值?如何找出MSVC用于预处理器宏的值
如果失败(或者更有用),如何使用/ D选项指定字符串?它需要用双引号替代我的源代码,因为我将它用作字符串文字。
我试图使用MSVC6上的一个/ D编译器选项来定义一个字符串,但是围绕它使用双引号有些奇怪。为了调试这个问题,我能够看到预处理器实际上代替了扩展宏的代码的价值。有什么办法可以做到这一点?我试图创建一个带有“汇编和源代码”的清单文件,但是源代码包含原始的宏名称,而ASM在那一行是一些难以理解的乱码。有没有办法在编译时获得宏值?如何找出MSVC用于预处理器宏的值
如果失败(或者更有用),如何使用/ D选项指定字符串?它需要用双引号替代我的源代码,因为我将它用作字符串文字。
尝试以下选项CL.EXE之一:
/E preprocess to stdout
/P preprocess to file
如果你在Visual Studio中建立,可以在项目属性对话框中的一个指定自定义命令行选项。
MSVC有一个编译器标志,允许您查看预处理源文件,其中扩展了所有的宏,删除了注释等。 - 整个翻译单元根据实际代码进行编译。预处理后的输出应该让你对你的宏观扩展有所了解。更多信息here。
有一个选项可传递给编译器(/P
),它会将预处理器输出写入my_cpp_file.i
,您可以在其中查看它。
/P完成了这项工作。我想知道为什么这对Google来说太难了......另外,对于任何对未来感兴趣的人来说,它似乎(从试错)可以用反斜杠在/ D字符串中引用引号。 – rmeador 2009-08-27 17:43:17