C語言中的弱符號(weak)用法及實例


一 符號概念:

  在C語言中,有強符號和弱符號,符號簡單來說就是函數、變量的名字,對於全局(非局部、非static)的函數和變量,能不能重名是有一定規矩的,強、弱符號就是針對這些全局函數和變量來說的。  

二 聲明方法:

 

  1 使用__attribute__((weak))修飾:

// function declaration

int __attribute__((weak)) power2(int x);

  // or

int power2(int x) __attribute__((weak));

// variable declaration;
extern int __attribute__((weak)) global_var;


2 使用#pragma weak修飾:

// function declaration
#pragma weak power2

int power2(int x);


三 實例分析:

#include <stdio.h>

void SVC_Handler (void) __attribute__((weak));

#pragma weak func2


void func2(void)
{
    printf("func2 is test\n");
}
void SVC_Handler (void) __attribute__((weak));

void SVC_Handler (void)
{
    int cnt = 0;


    while(1)
    {
        sleep(1);
        printf("svc handler cnt:%d \n",cnt++);
    }
}

#define vPortSVCHandler     SVC_Handler

int main()
{

    func2();
    vPortSVCHandler();


    return 0;
}

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM