我注意到,使用visual studio 2003,我可以“评论”我的评论,使他们不再是评论。这个需要一个例子:
如果我有:
/*
int commented_out = 0;
*/
我可以注释/ *和* / with //并且/ *和* /中的代码不再“已注释掉”(文本更改为非注释颜色和编译器再次将其视为代码)。像这样:
///*
int commented_out = 0;
//*/
我发现这对于msvc 2003来说是正确的,这是正常的C ++行为还是只是一个适用于这个编译器的侥幸?
答案 0 :(得分:19)
是的,这是完全正常的行为。 C ++标准说,/*
只是注释块的开头,只有它本身没有被注释掉。我经常使用你上面写的内容来添加/删除一个字符来评论或取消注释代码块。在两个代码块之间切换的一个很好的小技巧,其中一个总是被注释掉:
//*
code block 1 (uncommented)
/*/
code block 2 (commented)
//*/
现在,从头开始删除一个斜杠,它变为
/*
code block 1 (commented)
/*/
code block 2 (uncommented)
//*/
不能在生产代码中使用,但对于快速调试更改非常有用。
答案 1 :(得分:10)
它应该适用于任何编译器,因为在输入流中首先遇到//
。
我倾向于将#if 0
用于此类内容并将其更改为#if 1
以取消注释,如下所示:
#if 0
int commented_out = 0;
#endif
然后我根本不用担心评论标记。
答案 2 :(得分:1)
实际上,这几乎适用于任何带有C风格块注释的语言。
/*
int foo = 0;
/*/
int foo = 1;
//*/
甚至是XML评论
<!--->
a
<!-->
b
<!---->
不幸的是,我在lua的光剑评论中写了一个空白
--[[---------
---------]]--