C语言基础知识--weak关键字

2023-11-11

目录

一、C语言弱函数定义(weak关键字)

1、weak关键字简介

2、weak关键字使用示例

二、总结


一、C语言弱函数定义(weak关键字)

1、weak关键字简介

使用 __attribute__((weak)) 修饰函数,告诉编译器此函数为同名函数的备选,如果定义了其他同名函数,让编译器优先使用其他同名函数,如果未定义其他同名函数,那么就使用此函数。

2、weak关键字使用示例

创建两个源文件 main.c test.c。

main.c代码如下:

#include <stdio.h>

void test_func(void);
int main()
{
   test_func();
   return 0;
}


__attribute__((weak)) void test_func(void)
{
    printf("test_func\r\n");
}

test.c代码如下:

#include <stdio.h>

void test_func(void)
{
    printf("test_func1\r\n");
}

 代码说明:main.c中定义弱函数test_func,test.c中定义同名函数test_func,在main函数中调用test_func()。

编译代码,编译命令:gcc main.c test.c。 

程序执行结果如下图:

 

 根据结果可以发现,程序输出的结果是字符串"test_func1",所以在main函数中实际调用的是test.c中的 test_func函数。说明test.c中的test_func函数覆盖了同名弱函数。

二、总结

weak修饰函数一般用来系统默认实现,如果用户需要自定义,那么只需要重写同名函数即可覆盖系统的默认实现。类似于C++语言的方法重写。

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

C语言基础知识--weak关键字 的相关文章

随机推荐

  • pandas创建与保存(导入与导出)dataframe

    文章目录 一 创建Dataframe 1 创建空dataframe 2 从list 创建dataframe 把list当做一列 把list当做一行 3 从 dict key value 创建dataframe 4 从 CSV 创建dataf
  • 布局数据存储,中国电子云意在何为?

    数据存储市场的未来在哪里 答案毋庸置疑是 云端 著名咨询机构Wikibon曾经做过一项统计 将全球三大云服务商的数据存储营收与传统存储厂商的营收进行对比 发现云服务商的数据存储业务规模已然赶上传统存储厂商 这揭示出一个不可阻挡的趋势 即随着
  • 线性回归算法(二)-- 最优解与损失函数

    介绍 要理解最优解和损失函数 我们需要先弄明白什么是误差 以简单线性回归为例 如下图所示 青色数据样本为真实值 y y y 直线上同一 x x x位置的红色样本点为预测值
  • qt操作第三方软件

    QT控制第三方软件方法 背景需求 实现思路 获取句柄方法 QT通过获取的信息操作 例子 控件ID为0或者控件ID和操作句柄相同怎么办 得到窗体x y height width 模拟键盘鼠标操作 附录 键值对照表 背景需求 通过前辈们写的软体
  • Shell--基础--06--传递参数

    Shell 基础 06 传递参数 1 介绍 我们可以在执行 Shell 脚本时 向脚本传递参数 1 1 脚本内获取参数的格式 格式为 n n 代表一个数字 0 执行的文件名 1 为执行脚本的第一个参数 2 为执行脚本的第二个参数 以此类推
  • AI时代,重新理解阿里云

    如果说 在数字化时代 阿里云给外界的标签是基于算力 数据等要素的基建角色 那么 在如今的智能化时代 基于自身强大的云计算能力和长期以往的AI技术积累 它的这种底座底色显然再一次被夯实 彰显 作者 皮爷 出品 产业家 宜昌城东大道 左侧是中国
  • DirectX编程:利用 DirectSound 录音

    DirectX编程 利用 DirectSound 录音 转载 http www cnblogs com stg609 archive 2008 10 24 1318931 html 花了一阵子 把DirectX安装后自带的帮助文件中的那部分
  • ES时间分组统计查询

    创建索引 PUT test 索引结构 PUT test mapping properties insertTime type date id type text fields keyword type keyword ignore abov
  • halcon之Blob分析实战

    Blob分析 Blob Analysis 在计算机视觉中的Blob是指图像中的具有相似颜色 纹理等特征所组成的一块连通区域 Blob分析 Blob Analysis 是对图像中相同像素的连通域进行分析 该连通域称为Blob 其过程其实就是将
  • 【数据结构】栈

    文章目录 1 栈的概念及结构 2 栈的实现 2 1栈的实现思路 2 2概念理解题 2 3栈的结构体定义 2 4函数接口 功能 2 5头文件Stack h 2 6函数实现Stack c 2 7测试函数Test c 2 8有效的括号 利用栈实现
  • Oracl之动态Sql编写总结

    一 概述 在通常的sql操作中 sql语句基本上都是固定的 如 SELECT t empno t ename FROM scott emp t WHERE t deptno 20 但有的时候 从应用的需要或程序的编写出发 都可能需要用到动态
  • 【抽样技术】CH2 简单随机抽样补充——比率估计与回归估计

    目录 一 概述 1 问题的提出 2 比率估计与回归估计的作用和使用条件 3 辅助变量的特点 4 相关符号 二 比率估计量 编辑 编辑 1 问题的提出 2 定义 3 比估计与简单估计的比较 4 比率估计的思想 5 比率估计量及其性质 1 引理
  • 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

    import java util Arrays 问题 顺时针螺旋输出数组 题目特征 保持一种模式前进 遇到一定条件转换另一种模式前进 思路 用一个二维数组来不同取值来控制前进 设置变动的边界为改变的条件 public class Test1
  • [1160]ModuleNotFoundError: No module named setuptools_rust

    报错信息 Traceback most recent call last File line 1 in File tmp pip build my9sai1o cryptography setup py line 14 in from se
  • 复现iis 文件解析漏洞

    1 开启IIS服务 开始 管理工具 Internet信息服务 IIS 管理器 2 点击Internet信息服务 IIS 管理器 查看自己web网站中的文件和IIS服务的开始 停止 暂停按钮 查看IIS服务是否开启 若未开启请开启 HLY 本
  • 如何查看某个端口被占用

    查看8080端口是否被占用可以使用如下命令 Windows netstat ano find 8080 Linux netstat ano grep 8080 netstat命令详解 Netstat用于显示与IP TCP UDP和ICMP协
  • IPFS: NAT traversal(NAT穿越)

    IPFS是一个p2p网络 那么一定绕不开的一个问题就是NAT穿越 之前的文章里面也提到过IPFS网络连通性使用的ICE NAT穿越框架 本文简单介绍一下什么是NAT 为什么有NAT技术 NAT主要用来缓解全球的IPv4地址不够用的情况 IP
  • springboot整合rabbitMq(未完成)

    1 下载安装如下软件 erlang语言和rabbitmq服务 2 配置环境变量 erl安装目录 bin rabbit安装目录 sbin 3 安装插件 打开cmd窗口 进入sbin的cmd窗口 输入rabbitmq plugins enabl
  • python3 学习笔记(三):函数与模块

    python3 学习笔记 python 优雅 明确 简单 函数与模块 1 函数 组织好的 可重复使用的 用来实现某一功能的代码段 1 定义 def function x pass 其中 def为关键字 function 为函数名 x为形参
  • C语言基础知识--weak关键字

    目录 一 C语言弱函数定义 weak关键字 1 weak关键字简介 2 weak关键字使用示例 二 总结 一 C语言弱函数定义 weak关键字 1 weak关键字简介 使用 attribute weak 修饰函数 告诉编译器此函数为同名函数