为什么C ++不支持“嵌套注释”?

时间:2019-03-07 10:46:47

标签: c++ compiler-errors

在C ++中,多行注释以FName = Dir(SourcePath & "*" & R.Value & "*")开头,以/*结尾。

但是,如果出现以下情况,则会导致编译错误:

*/

为什么C ++不支持这种“嵌套注释”样式?

2 个答案:

答案 0 :(得分:5)

C ++标准对此进行了注释:

  

5.7评论[lex.comment]
  1字符/*开始注释,并以字符*/结尾。 这些注释不嵌套。字符//开始注释,该注释在下一个换行符之前终止。如果这样的注释中有换页符或垂直制表符,则在它和终止该注释的换行符之间只能出现空格字符;无需诊断。 [注意:评论   字符///**///注释中没有特殊含义,与其他字符一样对待。 类似地,//注释中的注释字符/*/*没有特殊含义。   —尾注]

已添加重点。

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

答案 1 :(得分:1)

与许多遗漏的语言一样,但仍然易于描述潜在的语言功能,该语言不在C ++标准中,因为没有人设法说服相关委员会相信它的重要性。

是的,它偶尔会很有用-例如,当通过插入注释块来“追杀”程序以追查内存泄漏或其他问题时。

我想不出一个理论上的原因,为什么在不引入该功能的情况下,我也想不出任何可能破坏现有代码的范围。

请注意其中一个晦涩之处:/**/可以在某些地方代替空格(例如int/**/n;); /*/**/*/的含义需要仔细考虑。

为什么不建议呢?