是否有可视化的c ++预定义预处理器宏,可以让您知道编译器何时优化

时间:2016-05-23 14:00:07

标签: c++ visual-c++ compiler-optimization predefined-macro

我希望能够使用visual c ++编译器(vc12)执行类似的操作:

// If we have compiled with O2
#ifdef _O2_FLAG_
bool debug_mode = false;

// If we are in dirty slow non optimized land
#else
bool debug_mode = true;
#endif

但我无法为此找到预定义的宏。

上下文

debug_mode标志的用法如下:

if (!debug_mode && search_timer->seconds_elapsed() > 20) {
   return best_result_so_far;
}

问题在于我在一个调试实例中经常出现这种情况会失败并将我炸掉,因为奇怪的是,我需要花费更长的时间才能完成代码而不是CPU通常会经历它: - )

如果有一些基础时钟在调试时暂停,那也可以解决我的问题。目前我正在使用两次调用std :: chrono :: high_res_clock :: now()之间的区别。

编辑:

在回答几条评论,解释为什么我不想做我想做的事情时,我或许应该简单地重新提出这个问题:是否有相同的gcc' s __optimize__ in CL?

1 个答案:

答案 0 :(得分:4)

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

另一个选择是自己为项目添加预处理器定义。