是否有visual c++;预定义的预处理器宏,可让您知道编译器何时进行优化 我希望能够用Visual C++编译器(VC12):

是否有visual c++;预定义的预处理器宏,可让您知道编译器何时进行优化 我希望能够用Visual C++编译器(VC12):,c++,visual-c++,compiler-optimization,predefined-macro,C++,Visual C++,Compiler Optimization,Predefined Macro,但我找不到用于此目的的预定义宏 上下文: 调试模式标志的使用方式如下: if (!debug_mode && search_timer->seconds_elapsed() > 20) { return best_result_so_far; } 问题在于,在调试实例中,我一步一步地执行此操作时,会不断失败并将我炸出,因为奇怪的是,我一步一步地执行代码所花费的时间比CPU通常执行的时间要长得多:-) 如果有某个底层时钟在调试时暂停,也可以解决我的问题。目前,我

但我找不到用于此目的的预定义宏

上下文:

调试模式标志的使用方式如下:

if (!debug_mode && search_timer->seconds_elapsed() > 20) {
   return best_result_so_far;
}
问题在于,在调试实例中,我一步一步地执行此操作时,会不断失败并将我炸出,因为奇怪的是,我一步一步地执行代码所花费的时间比CPU通常执行的时间要长得多:-)

如果有某个底层时钟在调试时暂停,也可以解决我的问题。目前,我正在使用对std::chrono::high_res_clock::now()的两个调用之间的差异

编辑:


在回答一些解释我为什么不想做我想做的事情的评论时,我也许应该将问题简单地改写为:在cl中是否有一个与gcc的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
等效的工具?

您可以使用
\u DEBUG
NDEBUG
检测调试配置。这在技术上并不意味着与优化标志相同,但99%的时间这应该足够了


另一种选择是自己向项目中添加预处理器定义。

即使它确实存在,预处理器也不能告诉您编译器将优化翻译单元(例如,如果无法进行优化),只是可能您的操作方式不对。您需要提高调试技能(例如,使用跟踪点而不是断点等)。使用编译器开关检查调试模式。几乎每一个IDE都有可能设置调试和发布模式,不同的编译器选项。值得注意的是,在代码中检测优化可能会阻止优化,因为C++优化规则要求在任何给定的情况下允许优化。它必须在代码级别进行验证,以产生与未优化版本相同的结果。如果您有以优化为条件的代码,这可能会阻止验证优化是否产生相同的结果。优化编译器无论如何都会删除
!debugmode&
如果它是
true
,或者如果这个表达式是
false
,它将删除整个if语句。你不能用这样的旗子可靠地降落在安全的地方(如果可能的话)。更好的方法是只使用
Debug
作为条件编译。不幸的是,我在大多数情况下都必须使用调试信息进行编译,同时还要进行优化,以使探查器正常工作,否则我会这样做。与GCC相比,VisualC++提供了非常少的宏。我想知道我是否错过了一个很好的网页,其中有很多这样的内容。
if (!debug_mode && search_timer->seconds_elapsed() > 20) {
   return best_result_so_far;
}