C语言常犯的错误
1. 申请内存后必须加错误检查。
申请内存三步:malloc->判断是否申请成功->memset赋值->使用->释放。
2. 对函数参数要检查。
3. 关键部分要加注释,注释风格要统一。
4. 统一编码规范(for/switch等缩进,空格, 注释)。
5. 定义debug开关,使用宏统一进行错误处理(FILE、LINE、func)。
6. 通常返回值:0表示成功,其他值表示失败。
7. 发现了在ip和端口计算中的字节序问题,在处理时要统一字节序。
8. 在进行位运算时,要注意不同数据的字节序问题,一般统一为网络字节序,同时要注意大端存储和小端存储。常用的转换函数有htons(),ntons(),ntonl(),ntohl()。
9. 要灵活应用宏简化代码,比如统一的错误处理,魔数等。
10. 要尽量减少内存申请次数,频繁申请会导致内存碎片化。
11. 声明结构体或数组,申请内存后,要memset整个内存,执行清零/赋值(例:memset(a,0,20*sizeof(char))),不然会有“未初始化变量调用错误”。
12. 相似函数定义函数结构体,定义函数结构体数组,循环调用(声明函数结构体,统一参数,按照索引调用))。
13. 左移/右移运算注意不要超出类型边界。如果移位的位数超过或者等于类型本身的位数,行为是未定义的,编译器不同而不同。(32位的直接移动32位错误,可以先移动31位,再移动1位)。
14. static inline 函数定义在.h头文件中,在其他文件中include 该头文件使用该函数。把希望全局使用又希望增加效率的函数实现在头文件中static inline。
|