__attribute__((visibility("default"))
时间: 2023-11-29 19:08:25 浏览: 79
__attribute__((visibility("default"))) 是一个GCC编译器的扩展属性,用于指定符号的可见性。它可以用于函数、变量和类型定义等符号,将它们的可见性设置为默认可见性。默认可见性意味着符号可以被其他模块访问和链接。这个属性通常用于动态链接库的开发中,以确保符号能够正确地被链接和使用。
相关问题
__attribute__((visibility("default"))用法
__attribute__((visibility("default")))是一个GCC编译器的特性,用于指定符号的可见性。可见性描述了符号在共享库(动态链接库)中的可见程度。
在C/C++中,默认情况下,所有非静态全局变量和函数都具有全局可见性,可以被其他文件中的函数调用。但是,如果你想将某些符号限制为仅在当前共享库内可见,或者将某些符号标记为可以被其他共享库使用,就可以使用__attribute__((visibility("default")))。
具体用法如下:
1. 将符号限制为仅在当前共享库内可见:
```c
int __attribute__((visibility("hidden"))) myHiddenFunction();
```
上述代码将myHiddenFunction()函数标记为隐藏的,即只能在当前共享库内部使用,对于其他共享库来说是不可见的。
2. 将符号标记为可以被其他共享库使用:
```c
int __attribute__((visibility("default"))) myExportedFunction();
```
上述代码将myExportedFunction()函数标记为可见的,默认情况下可以被其他共享库使用。
需要注意的是,__attribute__((visibility("default")))只在某些特定平台和编译器上有效,因此在使用时需要注意兼容性。
Linux下__attribute__((visibility (
该属性用于指定符号的可见性,即指定符号在链接时是否可见。在Linux环境下,有两种可见性:默认可见性和隐藏可见性。默认可见性表示符号在链接时会被导出,并可以被其他模块使用。而隐藏可见性表示符号在链接时不会被导出,只能被当前模块使用。
在使用__attribute__((visibility))时,可以设置参数"default"或"hidden"来指定符号的可见性。例如,__attribute__((visibility("default")))表示将符号设置为默认可见性,__attribute__((visibility("hidden")))表示将符号设置为隐藏可见性。
需要注意的是,__attribute__((visibility))只对函数、变量、类型、枚举等全局符号有效,对于局部符号无效。此外,该属性只在GCC编译器下有效,在其他编译器下可能无效。