C语言 : weak_alias描述

2023-05-16

weak-alias

  • 是一个宏,其目的是为函数添加一个”弱”别名,与”强”符号函数名区分。
  • 说明, 如果调用函数无对应的函数无”强”符号对应的函数,则会调用该别名对应的函数
  • C/C++ 函数调用是以编译后的”符号”做索引调用,详情了解 <符号表>
//macro weak_alias
#define weak_alias(name, aliasname) _mweak_alias(name, aliasname)
#define _weak_alias(name, aliasname) \
extern __typeof(name) aliasname __attribute__((weak, alias(#name)));
//macro weak_alias end

  • 所谓”强”符号函数名就是,普通声明定义的函数对应的函数名
    例如:
//strong.c
#include <stdio.h>
void print_hello(const char *s)
{
printf("print_hello: %s\n", s);
}
//strong.c end

print_hello 就是一个”强”函数符号


以下测试两种情况

__weak_hello 有两个”弱符号”
print_hello 有对应的实体函数 而 print_world 则无
//weak.c
#include <stdio.h>
void print_hello(const char *s) __attribute__((weak, alias("__weak_hello")));
void print_world(const char *s) __attribute__((weak, alias("__weak_hello")));
void __weak_hello(const char *)
{
printf("__weak_hello: %s\n", s);
}
//weak.c end
//main.c
int main(void)
{
print_hello("main test print_hello");
print_world("main test print_world");
return 0;
}
//main.c end
  • 编译运行测试
    $ gcc strong.c weak.c main.c && ./a.out
    print_hello: main test print_hello
    __weak: main test print_world
    $
可见 当调用函数有对应的”强”符号,则调用,若无则会尝试寻找其”weak”对应的函数,若再无则编译会报错 找不到该函数

End

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言 : weak_alias描述 的相关文章

随机推荐

  • 美女福利图片API接口,免费好用

    1 前言 美女图片福利查询接口 xff0c 能获取一些青春靓女的图片 xff0c 拿来做一些demo非常合适 查看接口完整信息 xff1a https www idmayi com doc detail id 61 15 2 接口明细 注意
  • 文本情感倾向分析API

    一 前言 文本情感倾向分析API xff0c 对带有情感色彩的主观性文本进行分析 处理 归纳和推理 二 接口文档 应用场景 商品评论的分析 电影或电视剧的评论分析 大众舆论导向分析 人物的情绪分析 人物关系分析 产品的比较分析 对某一个事件
  • 语音通知 API

    一 前言 语音通知API xff0c 通过系统发起电话直呼并播放通知内容 支持静态和动态语音 xff0c 可自定义通知内容 二 接口文档 特性 语音专线主动呼叫用户 xff0c 解决短信拦截等无法收到短信验证痛点 文本识别文本智能语音转化
  • 银行卡OCR API

    一 前言 银行卡OCR API xff0c 可以自动定位银行卡图片区域 xff0c 支持识别银行卡正面信息 xff0c 包含银行卡号 银行卡类型 银行名称等信息 二 应用场景 金融远程身份认证 使用身份证OCR和银行卡OCR实现用户信息的自
  • Centos7系统使用kubeadm方式安装k8s集群v1.26.1版本

    kubeadm方式安装k8s集群 一 准备机器 主机说明192 168 0 11master节点 xff0c 能连外网 xff0c 官网最低要求2核2G192 168 0 12node1节点 xff0c 能连外网 xff0c 官网最低要求2
  • 使用PIL和几种分类算法对标准数字图片进行识别

    详细代码见GitHub https github com nickliqian simple number recognition simple number recognition 使用PIL和几种分类算法对标准数字图片进行识别 背景 在
  • windows10修改子系统ubuntu安装路径

    1 查看当前安装的子系统版本 wsl l v 2 导出子系统文件到d盘 wsl export Ubuntu d ubuntu tar 3 注销当前子系统 wsl unregister Ubuntu 4 重新导入子系统到d盘 wsl impo
  • 字节高频题补充 检测循环依赖

    和 力扣207 课程表 相似 循环依赖检测 如 xff0c 39 A 39 39 B 39 39 B 39 39 C 39 39 C 39 39 D 39 39 B 39 39 D 39 61 gt false xff0c 39 A 39
  • 解决Python模块导入出现ModuleNotFoundError: No module named ‘***’的问题

    Python的模块非常多 xff0c 在安装这些模块的时候 xff0c 由于安装方法的不同 xff08 pip easyinstall xff09 xff0c 在python加载这些包时 xff0c 出现ModuleNotFoundErro
  • centos7端口管理

    1 开放端口 firewall cmd zone 61 public add port 61 5672 tcp permanent 开放5672端口 firewall cmd zone 61 public remove port 61 56
  • Rust安装后执行第一个程序遇到的问题

    当按照 https kaisery github io trpl zh cn ch01 02 hello world html 学习教程编写第一个Helloworld 执行rustc命令后汇报如下错误 G rustspace gt rust
  • 构建openvidu-loadtest工具-问题记录

    docker中创建ubuntu22 04的容器 xff0c 编译openvidu loadtest xff0c 遇到以下问题 xff0c 做备忘以便日后翻看 问题1 执行apt update更新镜像源库时发生错误 xff1a Updates
  • linux下-bash: ***: command not found解决办法

    今天在阿里云虚拟机上配置环境时出现 bash command not found错误 xff0c 网上找了一下 xff0c 方法如下 xff1a 如输入ls 出现 bash ls command not found ipconfig 出现
  • vue websocket 实现页面实时刷新

    vue websocket 实现页面实时刷新 最近公司项目需求后台web端要做实时能看到用户的登录状态以及所在位置 xff0c 说白了就是要做数据实时刷新 直接上代码吧 xff01 lt DOCTYPE html gt lt html la
  • Java 位运算详解

    目录 一 Java中支持的位运算 二 位运算规则 三 逻辑运算 xff08 一 xff09 与运算 xff08 amp xff09 一 运算规则 二 运算流程 xff08 二 xff09 或运算 xff08 xff09 一 运算规则 二 运
  • manjaro连接远程服务器

    不用下再window里面的类似XShell xff0c 只需要直接连就行 但是在ubuntu里面需要开启SSH服务 xff0c 再前边的文章里面有 xff0c 这篇只针对manjaro ssh username 64 100 100 100
  • GitLab创建SSH Key 过程

    1 首先你需要在github上或者gitlab上建立了自己的账户 xff0c 项目组已经将你加入了group 2 打开git bash xff0c 输入命令 ls al ssh xff0c 如果提示 xff0c ls cannot acce
  • wls2 ubuntu设置固定IP地址,并实现开机启动

    wls2 ubuntu设置固定IP地址 xff0c 并实现开机启动 64 echo off setlocal enabledelayedexpansion wsl shutdown Ubuntu 20 04 wsl u root d Ubu
  • 使用cmake调用swig生成库,Python调用C/C++

    前言 xff1a 项目中使用构建工具是cmake xff0c 为了集成我们的系统进去 xff0c 需要使用cmake来调用swig xff0c 然后swig生成python可执行的库 我的环境 xff1a win10swig 4 0 2py
  • C语言 : weak_alias描述

    weak alias 是一个宏 xff0c 其目的是为函数添加一个 弱 别名 xff0c 与 强 符号函数名区分 说明 如果调用函数无对应的函数无 强 符号对应的函数 xff0c 则会调用该别名对应的函数C C 43 43 函数调用是以编译