__attribute__ 中的weak属性使得 foo 这个函数符号弱化了。也就是说,就算foo函数没有定义,在程序编译的时候也不会报错。使用nm命令查看编译产物,可以发现foo为weak symbol,如下: __attribute__ 中的alias属性则给foo函数起了一个别名,也就是__foo。当我们在test.c文件中定义foo函数,并且将其编译进来时(gcc ma...
弱符号也称为weak alias(弱别名)。 attribute((weak))的作用 情况是这样的,碰到一个棘手的问题:我们不确定外部模块是否提供一个函数func,但是我们不得不用这个函数,即自己模块的代码必须用到func函数: 代码语言:javascript 代码运行次数:0 extern intfunc(void);...int a=func();if(a>...){...}... 我...
__attribute__((weak, alias())) 参考gcc的reference: 弱符号: 若两个或两个以上全局符号(函数或变量名)名字一样,而其中之一声明为weak symbol(弱符号),则这些全局符号不会引发重定义错误。链接器会忽略弱符号,去使用普通的全局符号来解析所有对这些符号的引用,但当普通的全局符号不可用时,链接器会使用弱符号。
还存在一种weak_alias的概念,对比strong_alias,就是展开的时候多了个__attribute__里多了个weak alias:表示当前符号是另外一个(目标target)符号的别称。比如: 1 2 3 void__f () {/* Do something. */; } voidf () __attribute__ ((weak, alias ("__f"))); alias修饰的是符号f,指定的目标符号...
__attribute__是gcc专有的,用来说明函数的熟性 weak 和 alias 分别是两个属性。weak 使得 main 这个符号在目标文件中作为 weak symbol 而不是 global symbol。用 nm 命令查看编译 dummy.c 生成的目标文件可用看到 main 是一个 weak symbol,它前面的标记是 W。而 alias 则使main 是 alt_main ...
GNU C 扩展了一个 alias 属性,这个属性很简单,主要用来给函数定义一个别名。 void__f(void) { printf("__f "); } voidf(void)__attribute__((alias("__f"))); intmain(void) { f(); return0; } 在Linux内核中你会发现alias有时候会和weak属性一起使用。如有些接口随着内核版本升级,函数接口发...
alias 则使 default_serial_console是__default_serial_console 的一个别名,__default_serial_console 和default_serial_console必须在同一个编译单元中定义,否则会编译出错。如果我们在文件1.c中声明#include int __foo() { puts(”I do no thing.”); } int foo() __attribute__ ((weak, alias(”__...
weak:弱声明 alias:函数起别名 noinline:无内联 always_inline:内联函数总是展开 ... 比如: char c __attribute__((algined(8))) = 4; int global_val __attribute__ ((section(".data"))); 1. 2. 当然,我们对一个变量也可以同时添加多个属性。在定义变量前,各个属性之间用逗号隔开。以下三种声明...
weak:弱声明 alias:函数起别名 noinline:无内联 always_inline:内联函数总是展开 ... 比如: char c __attribute__((algined(8))) = 4;int global_val __attribute__ ((section(".data"))); 当然,我们对一个变量也可以同时添加多个属性。在定义变量前,各个属性之间用逗号隔开。以下三种声明方式是没有问...
弱符号也称为weak alias(弱别名)。 attribute((weakref(“target”))) function attribute attribute((weakref))为弱引用,请注意引用与定义的区别。weakref就是申明某个引用为弱引用,弱引用时如果需引用符号不存在也不会链接出错,而是将需要引用的符号定义为WEAK属性及0地址(跟前面的WEAK属性很相似吧)。 weakref的...