很多东西,只看看是不行的,要想深入的去了解一个东西,一定要去不断地学习,实践,反思。
说白了就是要去打磨。
在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 ;
} int board_usb_init(int index, int usb_init_type)
__attribute__((weak, alias("__board_usb_init"))); int main()
{
board_usb_init(,);
return ;
}