-1

我想出了一种快速的方法,可以使用注释在代码的两个变体之间进行交换以进行快速测试:

doSomeNormalCode();
findAnObject()
//*/
.doA()
/*/
.doB()
//*/
;
additionalNormalCode();

这调用findAnObject().doA(); 只需删除和/之间的第一次交换。这可以通过添加更多行来扩展:.doA().doB()/*/

doSomeNormalCode();
findAnObject()
//*/
.doA()
/*/
.doB()
/*/
.doC()
/*/
.doD()
/*/
.doE()
//*/
;
additionalNormalCode();

这执行findAnObject().doA().doC().doE(); 您可以将 any/*/转换为 a//*/以切换它下面的所有行。所以添加/之前.doB()会将其更改为findAnObject().doA().doB().doD().doF();

这当然是非常复杂的。我已经习惯了,它对我来说很快。我从不将它保存在提交的代码中,只是为了在选项之间快速交换测试。

除了注释掉一个部分并取消注释另一部分之外,有没有一种更简单的方法可以在各种选项之间快速切换,如果注释掉的代码中有 /**/ 注释,这可能会很麻烦,要求每一行都以//.

我显然在这里指的是 C 风格的注释,但我也对其他语言感兴趣。

4

3 回答 3

6

怎么样

#if 0
  doA()
#else
  doB()
#endif

只需将 0 切换为 1 即可。或者使用定义,一旦你有两个以上的选项。

于 2013-03-04T17:16:34.780 回答
1

#define#ifdef, #ifndef,#else很好地解决了这个问题。

例如。

#ifdef DEFA
doA();
#endif

#ifdef DEFB
doB();
#endif

在大多数编译器中,您可以在命令行中传递#define 以在选项之间切换。

例如,在 Visual C++ 中,您可以编译为

cl /DDEFA a.c

或者

cl /DDEFB a.c

或者

cl /DDEFA /DDEFB a.c

于 2013-03-04T17:16:25.480 回答
0

这是第一个答案的示例

#define DOB

#ifdef DOA
doA()
#elif DOB
doB()
#elif DOC
doC()
#endif
于 2013-03-04T17:22:29.637 回答