注意细节和习惯(三)

来源:互联网 发布:看电脑硬件的软件 编辑:程序博客网 时间:2024/06/03 19:46

1,void* 在c语言中的使用,类似于C++的模板类。

2,别的模块没有显式使用的函数、变量等,都应该放在实现文件,定义成static,避免造成命名污染。

3,没有必要的情况下,不可以在头文件中放其他的头文件,容易造成命名污染,难查bug,而且编译也慢。如果有很多的实现文件需要共用一些东西,可以用一个专门的头文件放,也可以放内部的inline函数。

4,在头文件里,一般只放inline函数,

5,用宏,展开时可以很灵活地生成各种代码,

 

 

/**

 

          * 此句声明了一个钩子集:两个函数,和一个函数类型

 

          * 1。要求钩子函数统一用此种形式int func(args),成功返回0,失败返回其它值。

 

          * 2。reghook_xx(func)注册到这个钩子函数链末尾,成功返回0,若超过最大钩子数限制则返回-1

 

          * 3。runhook_xx(args)顺序运行这个钩子函数链,全部运行成功返回0,某钩子函数有失败则即时返回其它值

 

          */

 

         #define DECLARE_HOOK(name, args) /

 

                   typedef int hook_##name##_t args; /

 

                   int reghook_##name(hook_##name##_t pf); /

 

                   int runhook_##name args;

 

  3。更强的用法,请参考php源码,引用少数宏即完成几十个函数的声明、实现………………

 

 

#ifdef _cplusplus

extern "C" {

#endif

 

 

#ifdef _cplusplus

}

#endif

 

 

 

 

以后写完程序,先不要运行,在脑子里走三遍再说,否则,浪费时间调试.