1. 程式人生 > >C語言學習筆記--__attribute__((weak))

C語言學習筆記--__attribute__((weak))

1、在其他檔案中定義要呼叫的函式

main.c檔案

#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檔案

#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檔案

#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檔案

#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 **********/