1 宏定义
#define NthElemAddr (base ,elemSize, index) \
( (char *) base + index * elemSize )
以上实现了字节段的偏移
2 assert宏在 assert.h
#ifdef NDEBUG
#define assert(cond) (void)0
#else assert(cond) \
(cond)? ( (void) 0 ): fprinf(stdrr," " ); exit(0);
#endif
3 为了避免循环定义,建议使用以上#ifdef的形式
4 .h文件中不会编译生成任何代码,因此声明放在.h文件中进行,而函数的定义之类的均放在.c文件中。