在编程一个良好的习惯可以帮你避免很多潜在的bug,是你的程序更加的健壮。很多的问题都是伴随一些平时不注意的细节。
一下是在C语言编写代码中应该注意的事项。
- 用const限定不可修改的变量
- 不要在子作用域中复用变量
- .不要使用区别不明显的标识符。(数字1与小写字符l,数字0与小写字符o,数字2与自负z等)
- 不要在一个生命中声明超过一个变量;(char *p, c;容易将c也看成指针型的变量)
- 将不会被函数修改的指针参数声明为const;(避免在函数中改变不可改变的值)
- 把不需要外部链接的对象声明为static;(避免不同代码文件中的函数重名)
- 不要将指针的长度确定所指向类型的长度;(char *p; sizeof(p)的值为4而不是1)
- 不要认为结构体的长度等于它各个成员的长度之和;(struct buffer{ int i; char b[50];}buffer; sizeof (buffer) = 56, sizeof (buffer.i) + sizeof(buffer.b) = 54)
- 不要在结构体之间执行逐字节比较;(因为字节对齐)
- sizeof操作数不应该包含副作用,sizeof操作数最好为数据类型。(sizeof(a++)一般都是错的)
- 确保正确的使用指针运算符;
- 不使用sizeof确定类型或变量的长度;
- 不要依赖符号的优先级顺序做运算,使用小括号明确执行顺序;(避免因为自己的记错误的优先级,影响结果)
- 不要忽略函数的返回值;(避免因为系统的资源紧缺造成的函数执行失败)
- 不要应用未初始化的变量或内存;(避免随机数对自己程序结果的影响)
- 保证枚举常量映射到唯一的值;(enmu b { red = 4, orange, yellow, indigo = 5};这样造成了orange与indigo的值是一样,编程时要注意)
- 求余操作的结果并不只有负值。
- 把整数化为指针,把指针转化为整数要小心,注意结果的有效性。
- 对无符号数使用位操作,对有符号使用位操作要注意符号位。
- 保证整型转换不会丢失或错误解释数据。(数组索引、指针运算、数据边界等)