define的有趣用法

来源:互联网 发布:js中单双引号 编辑:程序博客网 时间:2024/06/07 13:51



#define module_init(func)                       module_init_level(func,5)
#define module_exit(func)                       module_exit_level(func,5)

#define service_init(func)                      module_init_level(func,1)
#define service_start(func)                     module_init_level(func,8)
#define service_stop(func)                      module_exit_level(func,8)
#define service_exit(func)                      module_exit_level(func,1)

#define module_init_level(func,level)           module_wrapper(func,MODULE_NAME,init,level,__LINE__)
#define module_exit_level(func,level)           module_wrapper(func,MODULE_NAME,exit,level,__LINE__)
#define module_wrapper(func,name,type,level,line)    module_entry(func,name,type,level,line)
#define module_entry(func,name,type,level,line)      void (* type##_##name##_##level##_##line##_)(void)                 \
        __attribute__((__section__("module_" #level "_" #type ),used)) = func

0 0
原创粉丝点击