ZHCUAV7Z september 1995 – march 2023 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , AM1705 , AM1707 , AM1802 , AM1806 , AM1808 , AM1810 , AM5K2E04 , OMAP-L132 , OMAP-L137 , OMAP-L138 , SM470R1B1M-HT , TMS470R1A288 , TMS470R1A384 , TMS470R1A64 , TMS470R1B1M , TMS470R1B512 , TMS470R1B768
在执行最终链接后,弱符号引用可能具有定义,也可能没有定义。如果符号未定义,则其地址被视为 0。在尝试使用该变量的内容之前,C/C++ 代码必须检查弱引用的地址,以确保该值不为 0。
extern __attribute__((weak)) unsigned char * foo;
if (&foo != 0)
*foo = 1;
如果对应于 foo 的链接器符号可能没有有效地址(例如,因为该符号包含整数值而非地址),或者可能超出 2GB 范围 PC 相对寻址,请使用 _symval 内置运算符,如下所示:
extern __attribute__((weak)) unsigned char * foo;
if (_symval(&foo) != 0)
*foo = 1;