发布时间:2014-06-16 14:08:56
在C中,translation unit(翻译单元)也可称为compilation unit(编译单元),translation unit是C预处理后的输出,即一个源文件经过预处理后。经过translation unit后产生一个目标文件(比如.c通过编译产生.o文件)。预处理包括:1.扩张的源文件以递归方式用指令中申明的字面文件取代所有#include指令(通常是头文件,但.........【阅读全文】
发布时间:2014-06-16 13:17:43
1.声明对象的存储时间一个对象的存储时间决定了他的生存周期。有三种存储时间:static, automatic,allocated。错误代码:点击(此处)折叠或打开char const *p; void dont_do_this() { char const str[] = "This will change";.........【阅读全文】
发布时间:2014-06-11 14:58:09
1.用常量(const)或枚举(enum)来声明不可变值一般而言,用const来声明不可变值而不是用宏定义。使用const的话,编译器可以检查对象类型(float, double),对象范围等。对于整型常量,应使用enum(枚举)代替const,可以消除获取整型变量地址可能,同时避免为整型变量分配存储空间。点击(此处)折叠或打开.........【阅读全文】
发布时间:2014-06-10 16:24:02
1.宏的变量名加上括号()点击(此处)折叠或打开#define CUBE(I) (I * I * I)int a = 81 / CUBE(2 + 1); 宏扩展后点击(此处)折叠或打开int a = 81 / (2 + 1 * 2 + 1 * 2 + 1); /* evaluates to 11 */.........【阅读全文】
发布时间:2014-06-10 14:25:10
在能使用宏或inline的情况下,建议使用inline。1.不合理的宏使用点击(此处)折叠或打开#define CUBE(X) ((X) * (X) * (X))int i = 2;int a = 81 / CUBE(++i); a扩展(结果未定义):点击(此处)折叠或打开int a = .........【阅读全文】