13. 注释是什么?为什么写注释?
注释是对代码的说明,编译器会自动忽略注释,也就是说,注释对实际代码没有影响。
注释是给程序员自己,或者其他程序员看的。
好的注释可以帮我们更好的理解代码,但是也不要过度注释,不要写没必要的注释 。
当然不写注释可能会让后期阅读代码的⼈抓狂。
写注释⼀定程度上反应了程序作者的素质,建议⼤家写必要的注释,在未来找工作的时候,写代码时
留下必要的注释也会给面试官留下更好的印象。
注释不是多余的,它是代码的说明书,也是未来你回看程序时最好的提示
13.1 注释的2种形式
13.1.1 /**/ 的形式
第⼀种⽅法是将注释放在/*...*/ 之间,内部可以分行。
cpp
/* 注释 */
/*
这是⼀⾏注释
*/
这种注释可以插在行内。
cpp
int fopen(char* s /* file name */, int mode);
上⾯示例中,/* file name */ ⽤来对函数参数进行说明,跟在它后⾯的代码依然会有效执行。
这种注释⼀定不能忘记写结束符号*/,否则很容易导致错误.
cpp
printf("a "); /* 注释⼀ 就在这里本应该有一个结束的标志
printf("b ");
printf("c "); /* 注释⼆*/
printf("d ");
上面示例的原意是,第⼀行和第三行代码的尾部,有两个注释。
但是,第⼀行注释忘记写结束符号,导致注释⼀延续到第三行结束。/**/ 的这个注释也不⽀持嵌套注释,/* 开始注释后,遇到第⼀个*/就认为注释结束了。
13.1.2 // 的形式
第二种写法是将注释放在双斜杠// 后面,从双斜杠到行尾都属于注释。
这种注释只能是单行,可以放在行首,也可以放在⼀行语句的结尾。这是C99标准新增的语法.
cpp
// 这是⼀⾏注释
int x = 1; // 这也是注释
13.1.3 注意事项
不管是哪⼀种注释,都不能放在双引号里面 。
双引号里面的注释符号,会成为字符串的⼀部分,解释为普通符号,失去注释作⽤。
cpp
printf("// hello /* world */ ");
上⾯示例中,双引号内的//和/* */都会被当作普通字符,不会被解析为注释,因此整行都会被打印,不会被预处理删除.
13.2 注释会被替换
预处理阶段会删除注释,将注释内容替换为一个空格 ,因此 min/*这里是注释*/value 会被处理为min value,而非minvalue,避免了标识符拼接错误.