当前位置: 技术问答>linux和unix
这句代码是什么意思呀?
来源: 互联网 发布时间:2016-07-06
本文导语: 请热心人帮忙看下,谢了: #define module_init(initfn) static inline initcall_t __inittest(void) { return initfn; } int init_module(void) __attribute__((alias(#initfn))); 这是什么鬼东西呀?花括号函数体后面怎么又跟了个函数声明呢...
请热心人帮忙看下,谢了:
这是什么鬼东西呀?花括号函数体后面怎么又跟了个函数声明呢?我记得#define后面是不能加封号的呀?怎么末尾加了封号呢?还有就是函数的形参里面怎么又出现了个#呢?
希望指点下。
#define module_init(initfn)
static inline initcall_t __inittest(void)
{ return initfn; }
int init_module(void) __attribute__((alias(#initfn)));
这是什么鬼东西呀?花括号函数体后面怎么又跟了个函数声明呢?我记得#define后面是不能加封号的呀?怎么末尾加了封号呢?还有就是函数的形参里面怎么又出现了个#呢?
希望指点下。
|
#initfn指宏的参数字符串,假如参数initfn为xxx,那么#initfn为"xxx"。
这段代码是什么意思真没看懂。
这段代码是什么意思真没看懂。
|
GCC的扩展
你打开GCC的帮助搜索一下 __attribute__
你打开GCC的帮助搜索一下 __attribute__
|
#define只是原样替换,因此是可以出现分号的,只是通常不这样用。
|
google一下宏定义里#和##的用法,譬如:http://www.china-b.com/kaoshi/kjsj/20090317/940822_1.html
再google一下__attribute__,如2楼所说。
再google一下__attribute__,如2楼所说。