写代码时,注释是家常便饭。但有时候一个看似不起眼的注释符号,却能让编译器“发疯”,报出一堆看不懂的错误。很多人第一反应是语法写错了、括号没闭合,折腾半天才发现——原来是注释符号搞的鬼。
常见的注释符号长什么样
不同编程语言用的注释方式不一样。比如 C、C++、Java 里,单行注释用 //,多行注释用 /* */:
// 这是一条单行注释
/*
这是多行注释的第一行
这是第二行
*/
而 Python 就简单点,只用 #:
# 这是 Python 的注释
JavaScript 和 CSS 则和 C 系列一样,用 // 和 /* */。要是你在 JavaScript 文件里误用了 #,那基本就等着报错吧。
嵌套注释引发的“血案”
最坑的一种情况是多行注释嵌套。看下面这段 C++ 代码:
/*
这是外层注释开始
/* 这是内层注释 */
外层注释结束
*/
看起来没问题?其实不行。C/C++ 不支持嵌套多行注释。第一个 /* 遇到第一个 */ 就结束了,后面的代码会被当作正常代码处理,很可能直接导致语法错误,编译器还报一堆莫名其妙的错,比如“未定义标识符”或者“表达式语法错误”。
复制粘贴带来的隐藏雷区
有时候你从网上抄了一段代码,顺手加个注释说明来源,结果一编译就炸。原因可能是那段代码本身夹带了未闭合的注释。比如:
printf("Hello World");
/* 忘记闭合这个注释
你再在后面写新代码,全都被当成注释内容,直到遇到下一个 */。这种问题在大型文件里特别难查,尤其是别人写的旧代码。
别拿注释当“删除代码”的工具
有些程序员懒得删代码,就用注释包起来,过几天再打开继续改。但如果里面本身就包含 /* */,那就危险了。比如:
/*
旧代码开始
printf("old code\n");
/* 已经被注释的部分 */
旧代码结束
*/
这又触发了嵌套问题,结果整个逻辑乱套。这时候要么改用单行注释逐行注掉,要么干脆删干净。
怎么避免这类问题
最简单的办法是:编辑器选个带语法高亮的。颜色不对劲,立马就能发现注释没闭合。另外,写多行注释时养成习惯,先写 /* */ 框架,再往中间填内容,避免漏掉闭合符号。
还有一个小技巧:现代 IDE 一般支持快捷键一键注释/取消注释,比如 Ctrl+/,用这个比手动敲符号靠谱多了。
别小看这些细节,一个漏掉的星号或斜杠,可能让你多花半小时查错。写代码不是炫技,稳一点,反而更快。