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.

posted on 2018-04-20 14:01  zlyang  阅读(858)  评论(0编辑  收藏  举报

导航