观察以下代码块:
//*
... code block ...
//*/
只需使用第一个斜杠即可启用/禁用它。
/*
... code block ...
//*/
这是设计,还是巧合? 在这件事上似乎没有任何历史。
答案 0 :(得分:1)
我怀疑你可以说这是设计这种方式。在单行注释出现之前,以C方式引入了块注释 - 这就是您添加另一个斜杠后代码最终的结果。
我宁可称之为巧合。
答案 1 :(得分:1)
很难说它是设计还是'快乐巧合'。它似乎是为我设计的(但我认为这也取决于评论行之间的内容)。
似乎我误解了这个问题 - 我认为OP遇到了一些代码,其中包含了一种格式化的注释,并且想知道编写它的人是否打算通过单个字符更改来启用/禁用它。
至于C评论样式是否设计为允许这样的行为,我很确定答案是“不”。 C99标准理由文件没有提及该技术,如果评论旨在启用它,我认为这将是基本原理。事实上,基本原理明确说明不应该使用注释来禁用代码,而应该使用预处理器机制。
此外,如果评论语法旨在允许这一点聪明(我认为它很聪明),我相信有人会在此之前写过。这是我第一次看到这种混合注释样式以启用/禁用代码块的特殊技术。
我偶尔会为某些类型的调试设计类似的东西(我不提倡将以下构造提交给版本控制 - 如果你真的需要在其中一个之间选择,请使用#if
或类似的预先设置两个或更多替代方案):
int x = /**/ 123 /*/ 456 /**/;
如上所述,123
将处于有效状态,456
将被注释掉。
删除前两个'*'
个字符中的一个会使123
处于非活动状态并且456
处于活动状态。
答案 2 :(得分:1)
/* */
评论来源于C并被C ++采用。然后,C ++为单行注释添加了//
。
你展示的是这两种类型的评论相互作用的一个很好的例子。我怀疑在编写标准时是否有人想到这一点 - 如果他们这样做,他们可能会想到"只是不要这样做"。