Sun Studio 12:C 用户指南

2.8.27 weak

#pragma weak symbol1 [= symbol2]

定义弱全局符号。该 pragma 主要在源文件中用于生成库。如果链接程序无法解析弱符号,它并不生成错误消息。


#pragma weak symbol

symbol 定义为弱符号。如果链接程序找不到 symbol 的定义,它不会生成错误消息。


#pragma weak symbol1 = symbol2

symbol1 定义为弱符号,它是符号 symbol2 的别名。只能在已定义 symbol2(可以在源文件中定义,也可以在其中一个包含的头文件中定义)的同一转换单元中使用这种形式的 pragma。否则,将导致编译错误。

如果程序调用但未定义 symbol1,并且 symbol1 在所链接的库中是弱符号,则链接程序使用该库中的定义。但是,如果程序定义自己的 symbol1 版本,则使用该程序的定义,而不使用库中 symbol1 的弱全局定义。如果程序直接调用 symbol2,则使用库中的定义;symbol2 的重复定义会导致错误。