如何弄清MSVC用于预处理器宏所使用的值
-
20-09-2019 - |
题
我正在尝试在MSVC6上使用A /D编译器选项来定义字符串,但是在其周围使用双引号有些奇怪。要调试这个问题,对我来说,能够看到预处理程序实际上替换为扩展宏的代码的价值将非常有帮助。有什么办法可以做到这一点?我尝试使用“汇编和源”创建一个清单文件,但是源包含原始宏名称,而ASM在该行中是一些难以理解的gibberish。有没有办法在编译时获得宏值?
失败(或更有用),如何使用 /D选项指定字符串?它需要用周围的双引号代替我的来源,因为我将其用作字符串文字。
解决方案
尝试以下选项之一to cl.exe:
/E preprocess to stdout
/P preprocess to file
如果您在Visual Studio中构建,则可以在“项目属性对话框”之一中指定自定义命令行选项。
其他提示
MSVC具有一个编译器标志,可让您查看已扩展的所有宏,删除评论等的预处理源文件。预处理的输出应为您提供有关宏扩展的见解。更多信息 这里.
有一个可以传递给编译器的选项(/P
),它将将预处理器输出写入 my_cpp_file.i
您可以在哪里查看它。
不隶属于 StackOverflow