为什么C++不支持"nested-comment"?

Why is a "nested-comment" not supported in C++?

本文关键字:nested-comment 不支持 C++ 为什么      更新时间:2023-10-16

在C 中,多行注释以/*开头,并以*/结尾。

,但会导致编译错误,如果:

/*
int a = 20;
  /*
   int b = 10;
  */ 
*/

有什么原因为什么C 不支持这种"嵌套点"样式?

C 标准在评论中指出:

5.7注释[lex.comment]
1字符 /*启动评论,该注释用字符 */终止。这些注释不会嵌套。字符//启动评论,该注释在下一个新线字符之前立即终止。如果在这样的评论中有形式喂养或垂直标签字符,则只有白色空间字符与终止评论的新线之间只出现白色空间字符。无需诊断。[注:评论 字符///**///注释中没有特殊含义,并且像其他字符一样对待。同样,注释字符///*/*注释中也没有特殊的含义。 - 末尾注]

添加了强调。

由于/*/*注释中没有任何特殊含义,因此/*之后的第一个*/将被视为多行注释的结尾。然后,另一个*/将被认为是悬挂的。

与许多缺少但易于描述潜在语言特征的缺失一样,这不在C 标准中,因为没有人能够说服相关委员会的重要性。

是的

我想不出一个理论上的原因,为什么我不能想到任何现有的代码,如果引入此功能。

请注意一个默默无闻:/**/可以代替某些地方的空间(例如int/**/n;);/*/**/*/的含义需要思考。

为什么不建议?