__weak类型函数

news/2025/2/19 4:53:45/

前言

今天无意之间看到了一个__weak类型函数,之前没有了解过,就查了一下资料。现在分享一下。

__weak是什么

含义解释

(1)其实这个用白话很好理解:__weak 表示弱定义,表示如果你自己定义了同名的函数就不用他,如果你没定义就使用这个弱函数。
(2)这个是属于C语言的中的一个关键字吗?不是的,__weak 关键字并不是标准的 C 语言关键字,它是一种特定编译器或环境提供的扩展。因此,使用 __weak 关键字时应当注意编译器和平台的兼容性,并确保正确的使用方式和语义。

代码解释

(1)在如下代码中,如果编译器承认__weak 关键字,那么最终执行结果是This is the weak foo function。
(2)但是如果编译器不承认__weak 关键字,那么就会进行报错。

#include <stdio.h>__weak void foo() {printf("This is the weak foo function.\n");
}void foo() {printf("This is the foo function.\n");
}int main() {foo();  // 调用弱符号函数return 0;
}

这样做的好处

(1)在开发大型项目的时候,因为是多个人同时开发。不同模块之间,开发人员不知道对方的命名是什么。可能会出现,两个开发人员给不同的函数功能,起了一个相同的名字。这样就会导致程序运行出现故障,排查问题会很不方便。
(2)除了__weak类型函数,还有static修饰的函数。static修饰的函数具有强符号性,他的功能与__weak修饰的甘薯功能恰好相反,被static修饰的函数,具有优先调用的能力。但是需要注意的是,static修饰的函数,不能被其他.c文件所调用。


http://www.ppmy.cn/news/76408.html

相关文章

SCMA基本原理介绍

SCMA: Sparse Code Multiple Access SCMA基本原理 我们考虑一个同步&#xff08;synchronous&#xff09;的SCMA系统&#xff0c; 含1个基站&#xff08;Base Station, BS&#xff09;&#xff1b; J J J个用户&#xff08;so called layers&#xff09;&#xff1b;K个OFDM…

Javaweb概念

什么是javaweb JavaWeb是指&#xff0c;所有通过Java语言编写可以通过浏览器访问的程序的总称&#xff0c;叫JavaWeb。 JavaWeb是基于请求和响应来开发的。 什么是请求 请求是指客户端给服务器发送数据&#xff0c;叫请求Request 什么是响应 响应是指服务器给客户端回传数据&…

Linux Ubuntu配置CPU与GPU版本tensorflow库的方法

本文介绍在Linux操作系统的发行版本Ubuntu中&#xff0c;配置可以用CPU或GPU运行的Python新版本深度学习库tensorflow的方法。 在文章Anaconda配置Python新版本tensorflow库&#xff08;CPU、GPU通用&#xff09;的方法&#xff08;https://blog.csdn.net/zhebushibiaoshifu/ar…

ChatGPT可能马上取代你!ChatGPT能做什么?

文章目录 前言1.客服机器人2.智能助手3.内部沟通4.个性化推荐5.语音交互6.教育培训7.医疗健康8.社交娱乐9.营销推广10.情感分析11.舆情监测12.知识管理13.金融服务14.物联网15.公共服务16.智能家居17.自动化办公18.交通出行19.游戏娱乐20.智慧城市21.决策支持22.人才招聘23.版权…

数据仓库漫谈-前世今生

数据仓库的内容非常多&#xff0c;每一个子模块拎出来都能讲很久。这里没法讲太多细节&#xff0c;大致思考了三个备选议题&#xff1a; 数据仓库的前世今生 数据仓库体系知识介绍 数仓开发者的路在何方&#xff1f; 既然是第一次分享&#xff0c;感觉还是跟大家普及下数仓的…

【mysql】库的操作+表的操作

文章目录 启动mysql登录mysql1.MySQL环境安装与基础认识修改端口号连接服务器服务器&#xff0c;数据库&#xff0c;表关系建表 第二讲_库的操作1.创建数据库2.创建数据库案例3.指明字符集和校验集校验规则对数据库的影响不区分大小写的查询以及结果&#xff1a;区分大小写的查…

GPC规范--安全域基础概念

概述&#xff1a; 分为三种主流类型&#xff1a; 1、发卡方安全域(Issuer Security Domain&#xff0c; ISD)&#xff0c;卡片上首要的、强制性存在的安全域&#xff0c;是卡片管理者(通常是发卡方)在卡片内的代表&#xff1b; 2、补充安全域(Supplementary Security Domain&am…

弹性伸缩服务在商业应用中的优劣势分析

在数字化飞速发展的今天&#xff0c;许多企业都面临着业务量快速变化的问题。为了应对这种变化&#xff0c;企业需要采用一种动态的资源调度机制&#xff0c;即弹性伸缩服务。本文将详细介绍弹性伸缩服务的优势、应用场景以及在实战中的具体应用。 弹性伸缩服务是一种可以根据业…