我想出了一种快速方法,可以使用注释快速测试代码中的两个变体之间进行交换:
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风格的评论,但我也对其他语言感兴趣。
答案 0 :(得分:6)
怎么样
#if 0
doA()
#else
doB()
#endif
只需将0切换为1即可。或者,如果您有两个以上的选项,请使用定义。
答案 1 :(得分: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
答案 2 :(得分:0)
以下是第一个答案的示例
#define DOB
#ifdef DOA
doA()
#elif DOB
doB()
#elif DOC
doC()
#endif