2

实现调试的一种正常过程是使用

#ifdef DEBUG

...debugging tests...

#endif

有时,代码的某些部分需要一种典型的“检查”算法,因此通常希望将其包装在一个函数中,这样代码仅在定义了 DEBUG 标志时才被调用。让该函数称为 myDebug();

我看到了两种自然的方法:每次调用 myDebug() 时都添加 ifdef,如下所示:

#ifdef DEBUG

myDebug();

#endif

或者 myDebug 定义为:

void myDebug()
{
#ifdef DEBUG

...code...

#endif
}

基本上,第一个避免了函数调用,而第二个避免了将代码与很多#ifdef/#endif。

是否有任何“标准”约定可以选择两者之一,或者我不知道的另一种方式?从“造型”的角度来看,是否值得选择第二个?

谢谢

4

1 回答 1

8

我会选择3号:

#ifdef DEBUG
#define myDebug(x) myDebug(x)
#else
#define myDebug(x) {}
#endif

这样,#ifdef代码中的任何地方都没有讨厌的 s,并且对于非调试版本,不会生成任何代码。

于 2012-04-16T09:04:14.370 回答