visibility 名称空间属性(仅限 C++)(IBM 扩展)

可视性名称空间属性是一种语言扩展,允许您控制是否以及如何在其他模块中引用或使用一个模块中定义的名称空间内的实体。 通过使用此功能,可以使共享库更小,并降低符号冲突的可能性。 有关详细信息,请参阅 使用可视性属性

可视性名称空间属性语法

读取语法图跳过可视语法图namespace标识__attribute__(( visibility__visibility__ ( "default""protected""hidden""internal" ))){namespace_body }

您可以指定具有或不具有前导和尾部双下划线字符的属性名称 visibility ; 但是,使用双下划线字符可降低名称与同名宏发生冲突的可能性。

示例

在以下示例中,函数 fun() 是在名称空间 A 中定义的,而 fun() 的 visibility 属性是缺省值:
namespace A __attribute__((visibility("default"))) {
   void fun(){}
}