Fork me on GitHub

  很多东西,只看看是不行的,要想深入的去了解一个东西,一定要去不断地学习,实践,反思。

说白了就是要去打磨。

  在linux中,最近遇到了这样一个定义:

int board_usb_init(int index, int usb_init_type) __attribute__((weak, alias("__board_usb_init")));

一下子懵逼了,啥意思?不懂的东西,还是要查一下的:

  weak 和 alias 分别是两个属性。

  weak 使得 foo 这个符号在目标文件中作为 weak symbol 而不是 global symbol

  而 alias 则使 foo 是 __foo 的一个别名。

  清楚之后,就要实例来看一下了,估计这下大家就清楚了。

#include <stdio.h>

//__weak int __board_usb_init(int index, enum usb_init_type init)
int __board_usb_init(int index, int usb_init_type)
{
        printf("my test is ok\n\t");
        return 0;
}
          
int board_usb_init(int index, int usb_init_type)
        __attribute__((weak, alias("__board_usb_init")));
         
        
int main()
{            
        board_usb_init(0,1);
        return 0;
}

  

posted on 2018-03-13 16:09  虚生  阅读(257)  评论(0编辑  收藏  举报