c++多行注释/ /不支持嵌套,首个*/即终止整个注释,导致后续代码误解析;可跨行但不可出现在字符串中;临时屏蔽含内层注释的代码时,应改用//或#if 0。

多行注释用 /* */,不能嵌套
直接用 /* 开头、*/ 结尾,中间换行没问题。但 C++ 不支持注释嵌套,比如在 /* ... */ 里再写一层 /* */,编译器会报错——它只认第一个 */ 为结束,后面的内容可能被误判为代码或语法错误。
常见错误现象:error: expected unqualified-id before ‘/’ token 或注释意外提前结束,导致后续代码被跳过或报错。
- 可以跨任意行,包括空行、缩进、混合代码(只要不破坏
/*和*/的完整性) - 不能出现在字符串字面量或字符常量中(
"/* this is not a comment */"就是普通字符串) - 若想临时“屏蔽”一段已含
/* */的代码,得改用行注释//逐行加,或手动删/移走内层*/
// 能否替代多行注释?
可以,但要注意行为差异。// 是行注释,只到本行末尾;每换一行就得重新写 //。它不会因为缩进或空行中断,也不怕嵌套问题,所以对临时禁用大段代码更安全。
使用场景:调试时快速注释掉几行、IDE 支持快捷键(如 Ctrl+/)批量加 //、避免 /* */ 意外闭合。
-
//在字符串、宏定义内部也生效,而/* */在宏展开后才处理,容易引发预处理阶段问题 - 某些旧编译器(如 C++98 兼容模式)对
//支持更稳,/* */若没闭合,错误提示可能非常靠后 - 不要混用:比如写成
/* // 这样不行 */,//在/* */内完全无效
注释里写代码会怎样?
只要在 /* */ 里,任何内容都当纯文本,包括看似合法的 C++ 语句。编译器彻底忽略它们,不检查语法、不报错、不参与宏展开。
但要注意:如果注释里不小心漏了 */,或者用了中文全角符号(如「/*」),会导致从那开始直到下一个真实 */ 的所有代码被吞掉——轻则编译失败,重则逻辑静默失效。
- 编辑器高亮异常(比如整页变灰色)是最早信号
- Clang/GCC 通常会提示
unterminated comment,但位置可能离实际出错点很远 - Git diff 里突然消失的大段代码,先查注释是否没闭合
多行注释看着简单,真正麻烦的是它不报错地“吃掉”代码——闭合符写错、复制粘贴带隐藏字符、合并冲突残留未清理的 /*,都可能让程序行为和你看到的源码完全对不上。
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











