单行注释应写为//初始化计数器,避免//后空格;多行注释用/ /且不可嵌套;文档注释///和/* /供Doxygen识别;勿留TODO/FIXME上线,应转为Issue并链接;注释须与代码同步更新。

单行注释用 //,别在后面加空格再写中文
很多新手习惯写成 // 这是一个注释,看起来没问题,但某些老旧编译器或嵌入式工具链(比如 IAR、Keil C++ 模式)对 // 后紧跟空白字符敏感,可能触发警告甚至截断。更稳妥的写法是紧贴斜杠后直接写内容://初始化计数器。C++11 起标准已明确支持 // 单行注释,但注意它不能跨行——哪怕你回车了,下一行也不属于该注释。
多行注释必须用 /* */,/* 不能嵌套
/* 和 */ 是成对出现的,中间所有内容(包括换行、//、甚至另一个 /*)都会被当作文本忽略。这意味着你不能写这样的代码:
/* 外层注释 /* 内层注释 */ 这里会出错 */
编译器会在第一个 */ 就结束整个注释,导致后续代码裸露或语法错误。如果真要临时屏蔽一大段含注释的代码,建议用预处理指令:#if 0 ... #endif,它不会受注释符号干扰。
文档注释不是标准语法,但 /// 和 /** */ 能被 Doxygen 识别
C++ 本身不定义“文档注释”,但工业项目普遍用 Doxygen 工具生成 API 文档。这时:
立即学习“C++免费学习笔记(深入)”;
-
///(三个斜杠)用于单行函数说明,放在声明上方 -
/** */(两个星号开头)用于多行结构化描述,支持@param、@return等标签 - 普通
/* */或//不会被 Doxygen 解析为文档
例如:
/// 计算两点间欧氏距离 /// @param x1 第一点横坐标 /// @param y1 第一点纵坐标 double distance(double x1, double y1, double x2, double y2);
注释不是调试替代品,别留 // TODO 或 // FIXME 在上线代码里
这类标记在开发期有用,但容易在合入主干时被忽略。CI 流程中应配置静态检查(如 clang-tidy 的 readability-todo 规则)自动报出。更可靠的做法是:
- 把
// TODO转成 GitHub Issue,并在注释里附上链接:// TODO(#123): 支持负数输入 - 用
static_assert(false, "未实现分支");替代模糊的// 这里还没写 - 注释里避免出现过期信息,比如函数签名变了但注释没改,比不写还危险
真正难的是让注释和代码保持同步——没人会为更新一行注释单独提 PR,所以最常失效的就是函数行为说明和参数约束描述。


















