c++ __attribute__关键字

__attribute__((visibility("default")))

这个关键字与gcc编译参数-fvisibility=hidden配合使用,如果使用了hidden参数,那么该.so库所有符号只对内可见,对外不可见,即使链接了这个.so库,还是不能调用其中的符合(函数等);

对于大型工程,为了避免同名符号冲突(默认情况下,先链接的.so库符号会被可执行程序先链接,即如果有两个fun函数,分别在a.sob.so,先链接a,则使用a的fun函数),可以先使用-fvisibility=hidden将所有符号隐藏,然后在需要对外的符号前添加__attribute__((visibility("default")))属性来保证符号对外可见。

当然也可以反过来,将-fvisibility设置为"default"或不设置这个属性,默认所有符号都对外可见,然后在不对外可见的函数或变量前添加__attribute__((visibility("hidden")))来隐藏该符号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>