第二章 符号
注释符号
知识点一:几个似是而非的注释问题
C语言的注释可以出现在C语言代码的任何地方,这句话对不?好,我们来从下面的例子分析中找出答案:
例: (a) int /*....*/i; (b)char *s="abcdefg //hijklmn";
(c) //Is it a \
valid comment?
下面我们来分析一下:(a)编译器会剔除注释,但是不是简单的剔除,而是用空格代替原来的注释; 所以(a)经过编译器后是: int i 而不是:inti
(b)用引号引起来都是字符串常量,那双斜杠也不例外;
(c)因为“\”是一个连续符。
知识点二:y=x/*p;
y= x/*p ,原意这是表示x除以p指向的内存里的值,并把结果赋值为y , 但是编译器提示出错;
实际原因:编译器把“/* ”当做一段注释的开始,把“/* ”后面的内容都当做注释的内容直到出现“ */ ”为止。这个表达式其实只是表示把x的值赋值给y,“/* ”后面的内容都当做注释。但是由于没有找到“*/ ”,所以提示出错。
我们可以把上面的表达式改一下:
y=x/(*p) 或者 y=x/(*p) 这样的话,就达到了x除以p指向的内存里的值,把结果赋值为y。
也就是说:只要斜杠(/)和星号(*)之间没有空格,都会被当做注释的开始;
知识点三:出色注释的基本要求
1.注释应该准确、易懂,防止二义性;
2.边写代码边注释,修改代码的同时修改相应的注释,以保证注释代码的一致性。不再有用的代码要及时删除;
3.注释是对代码的“提示",而不是文档。(我原来就常犯这个毛病,以为越详细越好)程序中的注释应当简单明了,注释太多了会让人眼花缭乱。
4.一目了然的语句不加注释;
5.对于全局数据(全局变量、常量定义等)必须要加注释;
6.注释采用英文,尽量避免在注释中使用缩写,特别是不常用的缩写;(因为不一定所有的编译器都能显示中文,所以别人打开你的代码,你的注释也许是一团乱码。还有,你的代码不一定时懂中文的人阅读)
7.注释的位置应与被描述的代码相邻,可以与语句在同一行,也可以在上行,但不能放在下方。同一结构中不同域的注释要对齐。
8.当代码较长,特别是有多重嵌套时,应当在一些段落的结束处注释,便于阅读。
9.注释的缩进要与代码的缩进一致。
10.注释的代码段时应注重"为何做 why" ,而不是"怎么做 how"
11.数值的单位一定要注释
【注释应该说明某数值的单位到底是什么意思,比如:关于长度的必须说明单位是毫米、米还是厘米;关于时间的单位必须说明是时、分、秒还毫秒等】
12.对系列的数值编号给出注释,尤其在编写底层驱动程序时候(比如引脚编号)
13.对函数的入口、出口数据给出注释;