首页 > 技术文章 > C语言实现函数override

zl-yang 2018-04-20 14:01 原文

利用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.

推荐阅读