注释写法
注释是写给「人」看的,编译器完全忽略。注释质量决定三个月后你还是否看得懂自己的代码。
1. 概念:两种注释
| 1 | // 这是单行注释:从 // 到行末 |
| 2 | |
| 3 | /* |
| 4 | 这是块注释 |
| 5 | 可以跨多行 |
| 6 | 注意:里面不要再嵌套 /* */ |
| 7 | */ |
| 8 | |
| 9 | int main(void) { |
| 10 | printf("hi\n"); // 行尾注释 |
| 11 | return 0; |
| 12 | } |
2. 注释不会「吃掉」字符串里的符号
| 1 | printf("// 不是注释,会打印出来\n"); |
| 2 | printf("/* 也不是注释 */\n"); |
| 3 | /* 才是注释 */ |
3. 什么值得写注释
- 为什么这么做(业务/硬件约束),而不是复述代码
- 单位与范围:角度、毫秒、电压、有效电平
- 危险操作:关中断、写保护区、内存映射
- 临时屏蔽调试代码(调试完应删除或恢复)
4. 反例与正例
| 1 | // 反例:复读机 |
| 2 | int i = 0; // 定义 i 为 0 |
| 3 | |
| 4 | /* 正例:解释意图与约束 */ |
| 5 | /* 消抖阈值:约 20ms @1kHz 轮询,避免机械抖动误触发 */ |
| 6 | const uint16_t DEBOUNCE = 20; |