在学校是我经常教导预处理语句可以很容易就会失控,因为你定义字符串,如:C++:contst静态DEBUG和if语句,实际执行时间开销是多少?
#define PI 3.1415926
的地方在代码中的每个取代,导致怪异换人当一个变量名中包含字符串PI
。
因此,在调试的时候,我从以下途径引导远:
#define _DEBUG
...
#ifdef _DEBUG
// debug code
#endif
...
但因子评分这将是“安全”的使用方法:
const static bool DEBUG = true
int main()
{
...
if(DEBUG){ /* debug code*/ }
...
}
这种运作良好,但我不知道是什么,与预处理器语句方法相比,这种方法的运行时间是多少?使用预处理器方法,在编译之前,所有事情都会发生,所以不会出现运行时间开销。
我知道一个简单的if
-statement的开销几乎可以忽略不计,但是当它深入到一些嵌套的循环运行很多次的时候,这并不适用(小的东西加起来大事)。
该编译器承认一个事实DEBUG
是const static
和硬编码到这个可执行文件,已经启用或禁用在编译时的调试代码?是什么让我怀疑这是有一天,在编写一些不相关的代码时,编译器警告我关于代码的一部分已经过时,因为围绕它的if
-状态永远不会成为现实(如果我没有记错的话)。
你是第一个!谢谢。我怀疑这件事,但很想知道。 – romeovs 2012-04-09 13:20:12
(jalf第一个发帖) – Mat 2012-04-09 13:20:56
呵呵,它说你早一分钟...奇怪 – romeovs 2012-04-09 14:47:41