前言

今天无意之间看到了一个__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文件所调用。

__weak类型函数相关推荐

  1. oracle输入数字类型吗,PL/SQL Number数字类型函数

    PL/SQL Number数字类型函数 更新时间:2007年03月21日 00:00:00   作者: ABS(x) 函数,此函数用来返回一个数的绝对值. ACOS(x)函数,返回X的反余弦值.X范围 ...

  2. 【Kotlin】函数类型 ( 函数类型 | 带参数名称的参数列表 | 可空函数类型 | 复杂函数类型 | 带接收者函数类型 | 函数类型别名 | 函数类型实例化 | 函数调用 )

    文章目录 I . 函数类型 II . 带参数名的参数列表 III . 可空函数类型 IV . 复杂函数类型解读 V . 函数类型别名 VI . 带 接收者类型 的函数类型 VII . 函数类型实例化 ...

  3. (篇十)用结构体数组处理学生成绩、结构体类型函数求平均值

    文章目录 一.结构体变量 二.用结构体数组处理学生成绩 三.结构体类型函数求平均值 用C语言学好结构化编程逻辑!本篇主要分析结构体数组和结构体类型的函数,对于二级C语言来说,主要是考处理学生多个成绩上 ...

  4. PHP 数据类型划分(8种)、获取数据(变量)的类型函数、单引号和双引号的字符串区分转义符、定界符、拓展

    首先,我们来看看八种数据类型划分有哪些? 数据类型划分: 基本类型(标量类型): 整数类型:int   integer 浮点数类型:float  double 字符串类型:string 布尔类型:bo ...

  5. 高等数学:第四章 不定积分(2)分部积分法 特殊类型函数的积分

    §4.3  分部积分法 设函数, 具有连续导数, 那么 移项得: 对这个等式两边求不定积分,得:                               (1) 式(1)称为分部积分公式. (1) ...

  6. 函数类型——void(无类型函数)

    void属于函数类型中的无类型函数之对应的还有实型(float,double),整型(int),布尔型(bool)和字符型(char). 在介绍void之前先介绍"返回值": 就如 ...

  7. C语言中的void类型函数

    最重要的一点是void类型函数里不能出现return语句 ,因为与常见的int double float char等数据类型不同,void是一个空类型,也就是说函数没有返回值,所以也不给主函数提供(或 ...

  8. 【Groovy】Groovy 方法调用 ( Java 中函数参数是接口类型 | 函数参数是接口类型 可以 直接传递闭包 )

    文章目录 一.Java 中函数参数是接口类型 二.函数参数是接口类型 可以 直接传递闭包 三.完整代码示例 一.Java 中函数参数是接口类型 在 Android 中经常使用如下形式的接口 : 定义一 ...

  9. [JS]js中判断变量类型函数typeof的用法汇总[转]

    1.作用: typeof 运算符返回一个用来表示表达式的数据类型的字符串.  可能的字符串有:"number"."string"."boolean&q ...

最新文章

  1. 怎么用leangoo做需求管理及规划?(产品Backlog、用户故事)
  2. python使用正则表达式验证用户输入密码的有效性
  3. ????常用注意事项
  4. 一种简单的数据库性能测试方法
  5. Spring+Velocity中模板路径的问题
  6. 笔记-高项案例题-2019年下-人力资源管理-管理者权力-马斯洛需求理论-冲突管理...
  7. CM3计算板安装硬件时钟DS3231
  8. android应用程序 多少钱_关于APP开发你最想了解的事,开发一个APP多少钱?
  9. SQL Server 2019中的行模式内存授予反馈
  10. JAVA将list2合并到list1_java如何将两个list合并的问题
  11. [UE4]复制引起的重复对象
  12. HP LaserJet P1007 装不到驱动
  13. sqlserver 2016 安装
  14. 【已解决】Python将网页内容保存为PDF (url转pdf)
  15. XDG0062 XAML 与XDG0008 XAML 错误的解决办法
  16. 红米2刷android4.4,【图片】红米2三网通刷CyanogenMod CM11 Android 4.4.4_红米2吧_百度贴吧...
  17. 静态化freemarker,分布式文件系统minIO
  18. [翻译完成] 树莓派性能测试
  19. python数据库选择
  20. MeasurementStudio安装教程

热门文章

  1. 华为哪款手机是鸿蒙系统_2020年华为开发者大会:年内推出手机版鸿蒙系统
  2. Git删除分支/恢复分支,操作指南
  3. 如何在Linux中配置JDK环境变量
  4. 20号(组装台式机教程) 篇1. 概述
  5. 利用canvas绘制的拓扑动画效果
  6. 开源Unity服务端客户端(双端C#)网络通讯框架(Lidgren)[一]
  7. 最详细的【微信小程序+阿里云Web服务】开发部署指引(八):开发小程序卡片类型呈现功能
  8. maven打包错误常见
  9. 浅谈 -- ♡ ‧₊˚ JS 与JQ的区别 ‧₊˚ ♡
  10. R语言与数据分析实战1-基础