使用注释在代码之间交换

时间:2013-03-04 17:14:09

标签: c comments

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

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风格的评论,但我也对其他语言感兴趣。

3 个答案:

答案 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