如果没有找到符号的定义,连接器就会报符号未定义错误,这种被称为强引用

在处理弱引用的时候,对于未定义的弱引用,链接器不认为是一个错误,默认为 0 或者一个能够识别的特殊值

#include<stdio.h>
void test_weak_ref(void) { printf("this is a weak ref\n"); }
 
static void test_weakref(void) __attribute__((weakref("test_weak_ref")));
 
void main(void) {
    printf("init done\r\n");
    if (test_weakref) {
        test_weakref();
    } else {
        printf("There is no weakref\r\n");
    }
}