采用 #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 |
使用字符串形式时,符号不需要预先声明。如果以下示例中的 _bar 和 bar 都是 extern "C",则不需要声明函数。但 bar 必须在同一对象中定义。
extern "C" void bar(int) {...} #pragma weak "_bar" = "bar" |