__attribute__((visibility("default"))
时间: 2023-11-29 09:08:25 浏览: 113
__attribute__((visibility("default"))) 是一个GCC编译器的扩展属性,用于指定符号的可见性。它可以用于函数、变量和类型定义等符号,将它们的可见性设置为默认可见性。默认可见性意味着符号可以被其他模块访问和链接。这个属性通常用于动态链接库的开发中,以确保符号能够正确地被链接和使用。
相关问题
解释代码:#define test __attribute__(visibility("default"))
这段代码定义了一个名为 "test" 的宏,在宏的展开过程中使用了 GCC 特有的 __attribute__ 关键字,指定了该宏的可见性为 "default"。
在 C/C++ 中,一个符号(比如函数、变量等)的可见性(visibility)通常有三种,分别是:
- default:符号可以被外部文件访问。
- hidden:符号只能被当前文件访问。
- protected:符号可以被外部文件访问,但不能被动态链接库(shared library)中的其他符号引用。
使用 __attribute__ 关键字可以对编译器进行一些额外的指示,本例中的 "visibility" 就是其中之一。在这里,我们使用 "default" 指示该宏的可见性为默认值,即可以被外部文件访问。
这个特性主要用于 Linux 系统下的动态链接库开发。由于动态链接库是在运行时加载的,所以需要在编译时就指定符号的可见性,以便在运行时正确地解析符号。
__attribute__ ((visibility("default")))
这是一种 GCC 编译器的特殊语法,用于指定符号的可见性。在 C/C++ 中,符号可以是函数、变量等等。默认情况下,编译器会将符号设置为“默认可见性”,即在当前编译单元中可见,但在其他编译单元中不可见。
使用 __attribute__ ((visibility("default"))) 可以将符号的可见性设置为“默认可见性”,从而使其在其他编译单元中也可以访问。这在动态链接库等场景中非常有用,可以使库中的符号被其他程序使用。相应地,也可以使用 __attribute__ ((visibility("hidden"))) 将符号的可见性设置为“隐藏”,从而使其在其他编译单元中不可见。
阅读全文