小编Ala*_*Jay的帖子

如何正确使用“弱”?或C函数覆盖

我想__attribute__((weak))正确使用功能覆盖。

我的代码无法正常工作。它出什么问题了?


普通

#include <stdio.h>

int __attribute__((weak)) doJob1(void);
int __attribute__((weak)) doJob2(int, int);

typedef int (*Job1)(void);
typedef int (*Job2)(int, int);
Run Code Online (Sandbox Code Playgroud)

普通

#include <stdio.h>
#include "common.h"

__attribute__((weak)) int doJob1(void)
{
        printf("doJob1 common WEAK\n");
        return 0;
}

__attribute__((weak)) int doJob2(int a, int b)
{
        printf("doJob2 common WEAK\n");
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

驱动程序

#include <stdio.h>
#include "common.h"

int doJob1(void)
{
        printf("doJob1 driverA Strong\n");
}

void main()
{
        Job1 j1 = doJob1;
        Job2 j2 = doJob2;

        j1();
        j2(0, 0);
}
Run Code Online (Sandbox Code Playgroud)

运行程序时,我看到:

sh> ./a.out
doJob1 …
Run Code Online (Sandbox Code Playgroud)

c gcc

7
推荐指数
1
解决办法
154
查看次数

标签 统计

c ×1

gcc ×1