C语言 attribute的问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 10:39:01
1)#define __init_call __attribute__ ((unused,__section__ (".initcall.init")))
“__initcall_start”与声请的节名有关是吗,是不是 取节名initcall之前加上"__",后面加上“_start”表示指向节首地址

2)声请的节名 有要求吗 比如一定要加上“.exit”,“.init”,".text"和“.data”等名

3)attribute是如何通过地址去访问的呢
比如 我设置这样一个例子

struct aaa{
int a;
int b;
int *c;
};

#define Struct_Section __attribute__ ((unused,section(".test.init")))

#define bbb(x, y, z) \
aaa bbb_##z Struct_Section = {x, y, z}

求解,谢谢
申请段的时候,段名为“a.exit”,“a.init”,"a.text"和“a.data”
有什么区别吗?

对于你的问题不太明白。

#define __init_call __attribute__ ((unused,__section__ (".initcall.init ")))

参考GCC说明,意思是说所有以__init_call前缀定义的函数在链接过程中都放到名字为.initcall.init的段(section)里面。也就是说,如果一个函数冠以__init_call,那么它在编译链接的时候就会放到.initcall.init这个段里面。