2013-03-04 90 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