请观察以下代码块:
//*
... code block ...
//*/
只需使用第一个斜杠即可启用/禁用它。
/*
... code block ...
//*/
这是有意为之,还是一个巧合呢?
似乎没有任何相关的历史记录。
请观察以下代码块:
//*
... code block ...
//*/
只需使用第一个斜杠即可启用/禁用它。
/*
... code block ...
//*/
这是有意为之,还是一个巧合呢?
似乎没有任何相关的历史记录。
//
注释来源于C语言的祖先语言BCPL。BCPL并没有/* ... */
这种注释方式,这种注释方式来自于PL/I语言。我猜测C++是第一种同时支持两种注释方式的编程语言。 - Keith Thompson很难说它是设计得到的还是一种“巧合”。 对我来说看起来像是设计的(但我认为这也取决于注释行之间的内容)。
看来我误解了问题-我以为OP遇到了一些格式化为这种方式的代码,并想知道写它的人是否打算通过改变单个字符来启用/禁用它。
至于C注释样式是否被设计为允许这种行为,我非常确定答案是“不”。 C99标准理据文件没有提到这种技术,如果评论被设计为启用它,我认为这应该在理据中。实际上,理据明确指出,注释不应用于禁用代码,而应使用预处理器机制。
此外,如果注释语法被设计为允许这种巧妙的方法(我确实认为它很聪明),我相信之前已经有人写过它了。这是我第一次看到混合注释样式以启用/禁用代码块的技术。
我偶尔为某些类型的调试而故意采用类似的设计(我不建议将下面的结构提交到版本控制 - 如果你确实需要在两个或更多选项之间进行选择,请改用 #if
或类似的预处理方法):
int x = /**/ 123 /*/ 456 /**/;
123
将被激活,456
将被注释掉。'*'
字符中的一个将使 123
不再激活,456
将被激活。
#if 0
或#if 1
只有一个字符的区别。 - stark0
和1
一眼就能区分开来。或者你可以在每行要注释的代码前面插入//
(这在任何一个好的编辑器中都很容易实现)。 - Keith Thompson