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