1、在其他文件中定义要调用的函数
main.c文件
在 main.c 文件中使用 __attribute__((weak)) 定义一个弱函数
#include<stdio.h>
#include "weak.h"
char __attribute__((weak))Fun_Sum(char a, char b)
{
return a + b;
}
int main(int argc, char *argv[])
{
char sum1 = 0;
sum1 = Fun_Sum(20, 1);
printf("%d \r\n",sum1);
return 0;
}
/***程序输出结果:19 ***/
/**************end of file**********/
weak.c文件
在 weak.c 文件中又定义一个相同的函数,没有 __attribute__((weak)) 修饰,那么编译器最终会使用这个函数
#include "weak.h"
char Fun_Sum(char a, char b)
{
return a - b;
}
/*******end of file***/
weak.h文件
#ifndef __WEAK_H_
#define __WEAK_H_
char Fun_Sum(char a, char b);
#endif // __WEAK_H_
/******** end of file **********/
2、在其他文件中不定义要调用的函数
main.c文件
在 main.c 文件中使用 __attribute__((weak)) 定义一个弱函数
#include<stdio.h>
#include "weak.h"
char __attribute__((weak))Fun_Sum(char a, char b)
{
return a + b;
}
int main(int argc, char *argv[])
{
char sum1 = 0;
sum1 = Fun_Sum(20, 1);
printf("%d \r\n",sum1);
return 0;
}
/****程序输出结果: 21 ********/
/**************end of file**********/
weak.c文件
在该文件中不定义该函数,那么最终会使用 main.c 文件中定义的弱函数
#include "weak.h"
#if 0
char Fun_Sum(char a, char b)
{
return a - b;
}
#endif // 0
/*******end of file***/
weak.h文件
#ifndef __WEAK_H_
#define __WEAK_H_
//char Fun_Sum(char a, char b);
#endif // __WEAK_H_
/******** end of file **********/