评论评论

时间:2008-11-11 23:36:07

标签: c++ comments

我注意到,使用visual studio 2003,我可以“评论”我的评论,使他们不再是评论。这个需要一个例子:

如果我有:

/*
int commented_out = 0;
*/

我可以注释/ *和* / with //并且/ *和* /中的代码不再“已注释掉”(文本更改为非注释颜色编译器再次将其视为代码)。像这样:

///*
int commented_out = 0;
//*/

我发现这对于msvc 2003来说是正确的,这是正常的C ++行为还是只是一个适用于这个编译器的侥幸?

3 个答案:

答案 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的光剑评论中写了一个空白

--[[---------
---------]]--