C 使用注释在代码之间交换

C 使用注释在代码之间交换,c,comments,C,Comments,我提出了一种使用注释在两种代码变体之间进行快速切换的快速方法,用于快速测试: doSomeNormalCode(); findAnObject() //*/ .doA() /*/ .doB() //*/ ; additionalNormalCode(); 这将调用findAnObject().doA()只需删除第一个/即可在.doA()和.doB()之间交换。这可以通过添加更多的/*/行来扩展: doSomeNormalCode(); findAnObject() //*/ .doA() /*

我提出了一种使用注释在两种代码变体之间进行快速切换的快速方法,用于快速测试:

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

\ifdef
\ifndef
很好地解决了这一问题

例如

#ifdef DEFA
doA();
#endif

#ifdef DEFB
doB();
#endif
在大多数编译器中,您可以在命令行中传递#define以在选项之间切换

对于EG,在Visual C++中,可以编译为

cl/DDEFA a.c

cl/DDEFB a.c

cl/DDEFA/DDEFB a.c

怎么样

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

刚开始时,只需将0切换为1即可。或者,当您有两个以上的选项时,使用defines。

这里是第一个答案的示例

#define DOB

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