Oracle Solaris Studio 12.2:C++ 用户指南

#pragma weak name1 = name2

采用 #pragma weak name1 = name2 形式时,符号 name1 成为对 name2 的弱引用。如果没有在其他地方定义 name1,那么 name1 的值为 name2。如果在其他地方定义了 name1,那么链接程序使用该定义并忽略对 name2 的弱引用。以下指令指示链接程序解析对 bar(如果已在程序中某处定义)的任何引用,以及解析对 foo 的引用。


#pragma weak bar = foo

采用标识符形式时,必须在当前编译单元中声明和定义 name2。例如:


extern void bar(int) {...}
extern void _bar(int);
#pragma weak _bar=bar

使用字符串形式时,符号不需要预先声明。如果以下示例中的 _barbar 都是 extern "C",则不需要声明函数。但 bar 必须在同一对象中定义。


extern "C" void bar(int) {...}
#pragma weak "_bar" = "bar"