C语言中的弱符号(weak)用法及实例

2019/04/10 10:10
阅读数 80

一 符号概念:

  在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;
}

   

原文出处:https://www.cnblogs.com/dylancao/p/12376413.html

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部