C语言实现函数override
利用gcc区分strong/weak symbol的机制实现
weak.c:
attribute((weak)) void foo(void)
{
printf("i'm weak\n");
}
strong.c:
void foo(void)
{
printf("i'm strong\n");
}
main.c:
int main(int argc, char **argv)
{
foo();
}
运行后会打印i'm strong.
反之,将strong.c中的foo添加attribute weak,去掉weak.c中的attribute,运行打印i'm weak.
https://github.com/pswarfound