2013-03-04 53 views
-1

,我想出了一个快速的方法,以两个变化之间的代码中使用注释进行快速测试交换:交换实现

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

这就要求findAnObject().doA();只需去除.doA().doB()之间的第一/互换。这可以通过增加更多的/*/线延伸:

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

此执行findAnObject().doA().doC().doE();您可以将任何/*///*/切换下面的所有线路。因此在.doB()之前添加/会将其更改为findAnObject().doA().doB().doD().doF();

这当然是非常复杂的。我已经习惯了它,它对我来说非常快。我从来没有保持在承诺的代码,只是为了快速测试选项之间进行交换。

是否有快速各个选项之间的交换,比注释掉一个部分,并取消注释另一部分,如果有注释掉的代码中/ ** /注释这是很麻烦的,需要每行其他更简单的方法以//开头。

我明显提到C风格的评论,但我也对其他语言感兴趣。

回答

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

6

怎么样

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

刚刚将0改为初始值为1。或者使用定义,一旦你有超过2个选项。

0

这里是第一个答案的一个例子

#define DOB 

#ifdef DOA 
doA() 
#elif DOB 
doB() 
#elif DOC 
doC() 
#endif