块注释是否设计为 enable/disable 使用单个字符的块?
Was the block comment designed to enable/disable blocks using a single character?
观察以下代码块:
//*
... code block ...
//*/
可以 enabled/disabled 只使用第一个斜杠。
/*
... code block ...
//*/
这是设计使然,还是巧合?
似乎没有任何关于此事的历史。
我怀疑你能说它是这样设计的。块注释是在单行注释出现之前以 C 方式引入的 - 这就是您的代码在添加另一个斜杠后最终的样子。
我宁愿称之为幸福的巧合。
很难说是设计的还是'happy coincidence'。它似乎是为我设计的(但我认为这也取决于评论行之间的内容)。
看来我误解了这个问题 - 我认为 OP 遇到了一些带有以这种方式格式化的注释的代码,并且想知道编写它的人是否打算将它 enabled/disabled 与单个字符改变。
至于 C 注释样式是否被设计为允许这种行为,我很确定答案是 "no"。 C99 Standard Rationale 文档没有提及这项技术,我认为如果评论旨在启用它,那将是基本原理。事实上,理由明确指出不应该使用注释来禁用代码,而应该使用预处理器机制。
此外,如果注释语法被设计成允许这一点聪明(我确实认为它很聪明),我相信之前有人会写过它。这是我第一次看到这种将注释样式混合到 enable/disable 代码块的特殊技术。
我偶尔会为某些类型的调试做一些类似的设计(我不提倡将以下结构提交给版本控制——如果你真的需要 select 在两个或多个选项之一之间):
int x = /**/ 123 /*/ 456 /**/;
如上所述,123
将被激活,456
将被注释掉。
删除前两个 '*'
个字符中的一个将使 123
处于非活动状态并 456
处于活动状态。
/* */
注释源自 C,并被 C++ 采用。 C++ 然后为单行注释添加了 //
。
你展示的是这两种评论相互作用的一个奇怪的例子。我怀疑有人在编写标准时想到了这一点——如果他们想到了,他们可能会想到 "just don't do that".
观察以下代码块:
//*
... code block ...
//*/
可以 enabled/disabled 只使用第一个斜杠。
/*
... code block ...
//*/
这是设计使然,还是巧合?
似乎没有任何关于此事的历史。
我怀疑你能说它是这样设计的。块注释是在单行注释出现之前以 C 方式引入的 - 这就是您的代码在添加另一个斜杠后最终的样子。
我宁愿称之为幸福的巧合。
很难说是设计的还是'happy coincidence'。它似乎是为我设计的(但我认为这也取决于评论行之间的内容)。
看来我误解了这个问题 - 我认为 OP 遇到了一些带有以这种方式格式化的注释的代码,并且想知道编写它的人是否打算将它 enabled/disabled 与单个字符改变。
至于 C 注释样式是否被设计为允许这种行为,我很确定答案是 "no"。 C99 Standard Rationale 文档没有提及这项技术,我认为如果评论旨在启用它,那将是基本原理。事实上,理由明确指出不应该使用注释来禁用代码,而应该使用预处理器机制。
此外,如果注释语法被设计成允许这一点聪明(我确实认为它很聪明),我相信之前有人会写过它。这是我第一次看到这种将注释样式混合到 enable/disable 代码块的特殊技术。
我偶尔会为某些类型的调试做一些类似的设计(我不提倡将以下结构提交给版本控制——如果你真的需要 select 在两个或多个选项之一之间):
int x = /**/ 123 /*/ 456 /**/;
如上所述,123
将被激活,456
将被注释掉。
删除前两个 '*'
个字符中的一个将使 123
处于非活动状态并 456
处于活动状态。
/* */
注释源自 C,并被 C++ 采用。 C++ 然后为单行注释添加了 //
。
你展示的是这两种评论相互作用的一个奇怪的例子。我怀疑有人在编写标准时想到了这一点——如果他们想到了,他们可能会想到 "just don't do that".