随学随记,暂时未经编程验证 Written by HOOK_TTG(Jamie Jiang)
1、在使用GCC的情况下,可以使用“-ansi”参数来限定编译器使用ANSI C标准来编译程序。那么代码就必须完全符合ANSI C标准才行,否则将不能编译通过。
2、#include 包含头文件的两种用法规范:
- #include "userLib.h" 通常用于引用用户编写的头文件;
- #include <standardLib.h> 通常用于引用标准库头文件;
3、最好是手动将需要的头文件都显式的包含进来。不要总认为某某的头文件已经默认包含了某某头文件。头文件重复包含,编译器会自动妥善处理的。头文件的包含先后顺序无所谓。
4、为了保证C代码对未来扩展和可移植的兼容,避免以后发生不兼容的问题,需要注意一下规范,避免代码中使用:
- 标识符:大写“E”开头,后跟“数字”或者大写“字母”;为将来增加错误代码而保留
- 标识符:“is”或者“to”开头,后跟小写“字母”;为将来增加特征测试和转换函数保留
- 标识符:“LC_”后跟大写字母;为将来增加指定宏本地属性特征而保留
- 所有后缀带有“f”或者“l”的数学函数名都是系统保留使用的。用于标记该函数分别用来处理“float”或者“long double”参数的
- 标识符:“SIG”开头,后跟大写“字母”;为将来增加信号名称而保留
- 标识符:“SIG_”开头,后跟大写“字母”;为将来增加信号行为动作而保留
- 标识符:“str”或者“mem”或者“wcs”开头,后跟小写“字母”;为将来增加字符串和数组函数而保留
- 标识符:后缀为“_t”;为将来增加类型名而保留
5、GNU C库的很多头文件中的定义有自己的特点特征,会保留一些定义约定;在自己编写代码时如果能尽量避免使用一样的定义,将是一个很好约定习惯:
- ‘dirent.h’ ——>“d_”前缀
- ‘fcntl.h’——>‘l_’,‘F_’,‘O_’, ‘S_’前缀
- ‘grp.h’ ——>‘gr_’前缀
- ‘limits.h’ ——> ‘_MAX’后缀
- ‘pwd.h’ ——> ‘pw_’前缀
- ‘signal.h’ ——> ‘sa_’ 、 ‘SA_’前缀
- ‘sys/stat.h’ ——> ‘st_’ 、 ‘S_’前缀
- ‘sys/times.h’ ——> ‘tms_’前缀
- ‘termios.h’ ——> ‘c_’,‘V’,‘I’,‘O’, ‘TC’前缀;还有“B”前缀,后跟一个“数字”