宏定义
1 #define __WEAK_DEF__ __attribute__((weak))
2 #define __WEAK_REF__ __attribute__((weak))
关于上述宏定义的说明
关键字其实只有weak(没有weakref),究竟是弱符号还是弱引用,编译器会根据上下文自己来识别
强符号
即函数和初始化了的全局变量
弱符号
1 即未初始化的全局变量 or 显示用weak定义的符号
2 是在链接的时候,对"重复定义"的符号如何选择(注意是静态链接)
弱引用
1 是在链接的时候,对"未定义错误"如何选择(静态链接和动态链接都可以)
2 动态链接器在找符号的时候,如果对方是弱引用,找不到的话,不返回错误,直接返回0地址
网友评论