__weak类型函数

简介: __weak类型函数

前言

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

目录
相关文章
|
程序员 C语言 C++
35.【C/C++ 枚举(bool)类型和宏定义 (超详细)】(二)
35.【C/C++ 枚举(bool)类型和宏定义 (超详细)】
145 0
|
7月前
|
存储 安全 程序员
【C++ 包装器类 智能指针】完全教程:std::unique_ptr、std::shared_ptr、std::weak_ptr的用法解析与优化 — 初学者至进阶指南
【C++ 包装器类 智能指针】完全教程:std::unique_ptr、std::shared_ptr、std::weak_ptr的用法解析与优化 — 初学者至进阶指南
264 0
|
C++
Const Reference(常量引用)
Const Reference(常量引用)是 C++ 编程语言中的一种特殊类型,它允许将一个常量的引用传递给函数或赋值给其他变量。常量引用主要用于传递只读数据,防止在函数内部修改实参。 使用常量引用的步骤如下:
109 5
|
存储 缓存 iOS开发
(转)谈weak对象、对象缓存以及Tagged Pointer
(转)谈weak对象、对象缓存以及Tagged Pointer
60 0
|
编译器 C语言 C++
35.【C/C++ 枚举(bool)类型和宏定义 (超详细)】(一)
35.【C/C++ 枚举(bool)类型和宏定义 (超详细)】
112 0
|
存储 安全 编译器
02-📝C++核心语法|C++对C的扩展【::作用域运算符、名字控制、struct类型加强、C/C++中的const、引用(reference)、函数】
复习`C++核心语法`,且适当进行汇编探索底层实现原理,进一步夯实基础,为以后的`底层开发`、`音视频开发`、`跨平台开发`、`算法`等方向的进一步学习埋下伏笔。
02-📝C++核心语法|C++对C的扩展【::作用域运算符、名字控制、struct类型加强、C/C++中的const、引用(reference)、函数】
|
Swift
Swift5.1—强引用循环与weak
Swift5.1—强引用循环与weak
238 0
Swift5.1—强引用循环与weak
|
存储 iOS开发
iOS - weak 与 assign 的区别,weak自动置nil
weak和assign是一种“非拥有关系”的指针,通过这两种修饰符修饰的指针变量,都不会改变被引用对象的引用计数。但是在一个对象被释放后,weak会自动将指针指向nil,而assign则不会。
C++ const常量对象、常量成员函数和常引用
C++ const常量对象、常量成员函数和常引用