2

我希望能够使用 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() 的两次调用之间的差异。

编辑:

为了回应几条解释为什么我不想做我想做的事情的评论,我或许应该把这个问题简单地改写成:__optimize__cl 中是否有 gcc 的等价物?

4

1 回答 1

4

您可以使用_DEBUGNDEBUG来检测调试配置。从技术上讲,这与优化标志的含义不同,但在 99% 的情况下这应该足够了。

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

于 2016-05-23T14:07:20.177 回答