类声明时,类名前面加宏名是什么意思? __attribute__((visibility("visibility_type")))

e.g:

#define HELPER_API __attribute__((visibility("default")))


__attribute__((visibility("visibility_type")))

此函数属性影响 ELF 符号的可见性。

Note

此属性是 ARM 编译器支持的 GNU 编译器扩展。

语法

__attribute__((visibility("visibility_type")))

其中,visibility_type 是下列值之一:

default

假定的符号可见性可通过其他选项进行更改。缺省可见性将覆盖此类更改。缺省可见性与外部链接对应。

hidden

该符号不存放在动态符号表中,因此,其他可执行文件或共享库都无法直接引用它。使用函数指针可进行间接引用。

internal

除非由 特定于处理器的应用二进制接口 (psABI) 指定,否则,内部可见性意味着不允许从另一模块调用该函数。

protected

该符号存放在动态符号表中,但定义模块内的引用将与局部符号绑定。也就是说,另一模块无法覆盖该符号。

用法

除指定 default 可见性外,此属性都可与在这些情况下具有外部链接的声明结合使用。

您可在 C 和 C++ 中使用此属性。在 C++ 中,还可将它应用于类型、成员函数和命名空间声明。

你可能感兴趣的:(类声明时,类名前面加宏名是什么意思? __attribute__((visibility("visibility_type"))))