Oracle® Solaris Studio 12.4:C 用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

2.2 链接程序作用域说明符

以下声明说明符有助于隐藏 extern 符号的声明和定义。 通过使用这些说明符,您不必再使用链接程序作用域的 mapfile。您也可以在命令行上指定 –xldscope 来控制变量作用域的缺省设置。 有关更多信息,请参见-xldscope={v}

表 2-2  声明说明符
含义
__global
该符号具有全局链接程序作用域,且是限制最少的链接程序作用域。 该符号的所有引用都绑定到在第一个动态模块中定义该符号的定义上。该链接程序作用域是 extern 符号的当前链接程序作用域。
__symbolic
该符号具有符号链接程序作用域,该作用域的限制比全局链接程序作用域的限制更多。 从所链接的动态模块内部对符号的所有引用都绑定到在模块内部定义的符号上。在模块外部,符号也显示为全局符号。该链接程序作用域对应于链接程序选项 -Bsymbolic。有关链接程序的更多信息,请参见 ld(1)。
__hidden
该符号具有隐藏的链接程序作用域。 隐藏链接程序作用域具有比符号和全局链接程序作用域更高的限制。动态模块内部的所有引用都绑定到该模块内部的一个定义上。符号在模块外部是不可视的。

对象或函数可以用限制较多的说明符重新声明,但不能用限制较少的说明符重新声明。符号定义后,不可以用不同的说明符声明符号。

__global 是限制最少的作用域,__symbolic 是限制较多的作用域,而 __hidden 是限制最多的作用域。