【发布时间】:2018-12-03 22:28:25
【问题描述】:
我们正在使用 VC++ 2015 和 gmake。该编译器如何确定它是发布版本还是调试版本?
cl.exe /nologo /Zc:wchar_t /wd4675 /wd4407 /wd4595 /W3 /FS /GR /GS- /EHac /Zc:threadSafeInit- /X /WX /Zi /Ob1 /Oi /Ot /D "WIN32 " /D "_WINDOWS" /D "UNICODE" /D "_UNICODE" /D _WIN32_WINNT=0x0601 /D "_CRT_SECURE_NO_WARNINGS" /D _SCL_SECURE_NO_WARNINGS
这样做的主要原因是找出cl.exe为_ITERATOR_DEBUG_LEVEL使用了哪个值并进行相应的调整。
谢谢, 迈克
【问题讨论】:
-
调试配置更改了几个编译选项。 /Od 禁用所有优化是最明显的一种,/RTC 特别有助于诊断 UB。 /ZI 支持编辑+继续。 _ITERATOR_DEBUG_LEVEL 是需要用/D 指定的宏。您展示的内容很不稳定,它具有类似发布的选项,但没有定义 NDEBUG。生成文件往往会发生这种情况。
-
感谢@HansPassant
标签: c++ visual-c++