我想__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)