实现调试的一个常规过程是使用
#ifdef DEBUG
...debugging tests...
#endif
有时,代码的某些部分需要典型的“检查”算法,因此人们通常希望将其包装在函数上,这样只有在定义了DEBUG标志时才调用代码。让该函数称为myDebug();
我看到两种自然的方法:每次调用myDebug()时都会添加ifdef,如下所示:
#ifdef DEBUG
myDebug();
#endif
或myDebug定义为:
void myDebug()
{
#ifdef DEBUG
...code...
#endif
}
基本上,第一个避免函数调用,而第二个避免使用大量#ifdef /#endif代码。
是否有任何“标准”惯例可以选择其中一种,或另一种我不知道的方式?是否值得从“造型”的角度来选择第二个?
由于
答案 0 :(得分:8)
我会选择第3名:
#ifdef DEBUG
#define myDebug(x) myDebug(x)
#else
#define myDebug(x) {}
#endif
这样,代码中到处都没有令人讨厌的#ifdef
,对于非调试版本,不会生成任何代码。