Pri*_*han 15 language-features comments programming-languages
为什么嵌套注释在C++,Java中被禁止,尽管嵌套注释有用,整洁,优雅,可用于注释掉有注释的语句?
Cla*_*bel 14
C和C++这样做是为了便于解析.这样,当他们点击/*的评论开始时,解析器可以轻易地扫描到最后.否则,它必须设置并维护堆栈,然后如果注释标记不匹配则报告错误.
至于为什么Java这样做,答案很简单 - Java的语法被设计为模拟C和C++.如果允许嵌套注释,它可能会绊倒一些C程序员,并且会编写许多愤怒的博客文章!
至少对于部分正确的C++来说,没有问题:
/*
//
//
*/
Run Code Online (Sandbox Code Playgroud)
但是,如果你已经在一个想要注释掉的部分中得到/*注释,那么你可以用一个#if 0我认为许多编译器优化掉的部分来做它.如:
#if 0
/*
*/
#endif
Run Code Online (Sandbox Code Playgroud)
每种语言(-family)都不同,但总的来说,它们不是“禁止”的,而是不支持的。支持它们是一种设计选择。
选择(对于较旧的语言)的一个原因可能是易于解析。
注意:我记得有一个 C++ 编译器,可以选择让它们嵌套。它被标记为“非标准”。