__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文件所调用。

目录
相关文章
|
12月前
|
程序员 C语言 C++
35.【C/C++ 枚举(bool)类型和宏定义 (超详细)】(二)
35.【C/C++ 枚举(bool)类型和宏定义 (超详细)】
111 0
|
4月前
|
存储 安全 程序员
【C++ 包装器类 智能指针】完全教程:std::unique_ptr、std::shared_ptr、std::weak_ptr的用法解析与优化 — 初学者至进阶指南
【C++ 包装器类 智能指针】完全教程:std::unique_ptr、std::shared_ptr、std::weak_ptr的用法解析与优化 — 初学者至进阶指南
192 0
|
11月前
|
C++
Const Reference(常量引用)
Const Reference(常量引用)是 C++ 编程语言中的一种特殊类型,它允许将一个常量的引用传递给函数或赋值给其他变量。常量引用主要用于传递只读数据,防止在函数内部修改实参。 使用常量引用的步骤如下:
73 5
|
11月前
|
存储 缓存 iOS开发
(转)谈weak对象、对象缓存以及Tagged Pointer
(转)谈weak对象、对象缓存以及Tagged Pointer
46 0
|
12月前
|
编译器 C语言 C++
35.【C/C++ 枚举(bool)类型和宏定义 (超详细)】(一)
35.【C/C++ 枚举(bool)类型和宏定义 (超详细)】
85 0
|
容器
解析Obj-C中的assgin,copy,retain关键字的含义。
解析Obj-C中的assgin,copy,retain关键字的含义。
77 0