在C ++中,多行注释以FName = Dir(SourcePath & "*" & R.Value & "*")
开头,以/*
结尾。
但是,如果出现以下情况,则会导致编译错误:
*/
为什么C ++不支持这种“嵌套注释”样式?
答案 0 :(得分:5)
C ++标准对此进行了注释:
5.7评论[lex.comment]
1字符/*
开始注释,并以字符*/
结尾。 这些注释不嵌套。字符//
开始注释,该注释在下一个换行符之前终止。如果这样的注释中有换页符或垂直制表符,则在它和终止该注释的换行符之间只能出现空格字符;无需诊断。 [注意:评论 字符//
,/*
和*/
在//
注释中没有特殊含义,与其他字符一样对待。 类似地,//
注释中的注释字符/*
和/*
没有特殊含义。 —尾注]
已添加重点。
由于/*
在/*
注释中没有任何特殊含义,因此*/
之后的第一个/*
将被视为多行注释的结尾。然后另一个*/
将被视为悬空。
答案 1 :(得分:1)
与许多遗漏的语言一样,但仍然易于描述潜在的语言功能,该语言不在C ++标准中,因为没有人设法说服相关委员会相信它的重要性。
是的,它偶尔会很有用-例如,当通过插入注释块来“追杀”程序以追查内存泄漏或其他问题时。
我想不出一个理论上的原因,为什么在不引入该功能的情况下,我也想不出任何可能破坏现有代码的范围。
请注意其中一个晦涩之处:/**/
可以在某些地方代替空格(例如int/**/n;
); /*/**/*/
的含义需要仔细考虑。
为什么不建议呢?