陈皓搞了32条,我找了些自己需要注意的,罗列在这里
1、注释,包括版本和程序的。
2、对于函数的输入、输出都需要检查,对系统调用的返回值也需要检查。简单一句话,不要相信任何东西,哪怕函数的输入是自己写的另一个函数的输出。
3、将出错处理放前面。如内存分配,先写if (不成功)的部分。
4、头文件的一般格式 #ifndef .... #define..... #endif
5、 malloc和free的操作有以下规则:
1) 配对使用,有一个malloc,就应该有一个free。(C++中对应为new和delete)
2) 尽量在同一层上使用,不要像上面那种,malloc在函数中,而free在函数外。最好在同一调用层上使用这两个函数。
3) malloc分配的内存一定要初始化。free后的指针一定要设置为NULL。
6、声明了变量,尽快初始化
7、修改别人的程序时,要尊重他人的劳动
8、合理使用goto
9、声明宏不要加分号
10、不要忽略Warning
11、利用预编译技术,如下所示声明调试函数:
#ifdef DEBUG
void TRACE(char* fmt, ...)
{
......
}
#else
#define TRACE(char* fmt, ...)
#endif
于是,让所有的程序都用TRACE输出调试信息,只需要在在编译时加上一个参数“-DDEBUG”,如:
cc -DDEBUG -o target target.c
于是,预编译器发现DEBUG变量被定义了,就会使用TRACE函数。而如果要发布给用户了,那么只需要把取消“-DDEBUG”的参数,于是所有用到TRACE宏,这个宏什么都没有,所以源程序中的所有TRACE语言全部被替换成了空。一举两得,一箭双雕,何乐而不为呢?
顺便提一下,两个很有用的系统宏,一个是“__FILE__”,一个是“__LINE__”,分别表示,所在的源文件和行号,当你调试信息或是输出错误时,可以使用这两个宏,让你一眼就能看出你的错误,出现在哪个文件的第几行中。这对于用C/C++做的大工程非常的管用。
最后一条,我一直都没用过,有机会试试
看他的《编程修养》的时候,我发现c的东西又忘了,连传值、传指针、传地址都不记得了,得复习了