我注意到,使用visual studio 2003,我可以"评论"我的评论,使它们不再是评论.这个需要一个例子:
如果我有:
/* int commented_out = 0; */
我可以注释掉/*和*/with //并且/*和*/中的代码不再被"注释掉"(文本更改为非注释颜色,编译器再次将其视为代码).像这样:
///* int commented_out = 0; //*/
我发现这对于msvc 2003来说是正确的,这是正常的C++行为还是只是一个与这个编译器兼容的侥幸?
是的,这是完全正常的行为.C++标准说,/*
只有当注释块本身没有被注释掉时,它才是注释块的开始.我经常使用你上面写的内容来添加/删除一个字符来评论或取消注释代码块.在两个代码块之间切换的一个很好的小技巧,其中一个总是被注释掉:
//* code block 1 (uncommented) /*/ code block 2 (commented) //*/
现在,从头开始删除一个斜杠,它就变成了
/* code block 1 (commented) /*/ code block 2 (uncommented) //*/
不是在生产代码中使用的东西,但对于快速调试更改非常有用.
它应该在任何编译器中工作,因为//
它首先在输入流中遇到.
我倾向于使用#if 0
这种东西并将其更改#if 1
为取消注释,如下所示:
#if 0 int commented_out = 0; #endif
然后我根本不用担心评论标记.