Fork me on GitHub

随笔 - 997  文章 - 5  评论 - 181  阅读 - 300万 

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

说白了就是要去打磨。

  在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   虚生  阅读(270)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示