技术随笔-inline extern static

C语言基础 -宏字符串比较 有些业务场景,当使用C语言的宏进行隔离时,想做到根据宏的字符串来做一些比较处理,可以如下实现; 阅读详情

在IOS开发的过程中 会用到CG_INLINE函数,通常在h文件定义,来预编译函数,这么做的目的是编译不会造成语义上的歧义,提高效率。

#if !defined(CG_INLINE)
# if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
#  define CG_INLINE static inline
# elif defined(__cplusplus)
#  define CG_INLINE static inline
# elif defined(__GNUC__)
#  define CG_INLINE static __inline__
# else
#  define CG_INLINE static    
# endif
#endif

调用函数实际上是在栈中执行,执行一个函数要出栈和入栈,实现保护现场并记忆执行地址,转后恢复原来的地址继续执行。需要时间和空间上的开销,会影响效率,针对函数代码体不是很大且频繁调用的函数,内联函数为此场景量身定制。

内联函数的优势:

减少CPU开销,并且程序整体速度加快

关键词inline

内联函数是在编译的时候执行

extern 修饰对象是的时候表示对象已经声明过,不用再次分配内存。

static 修饰函数只在本地文件上可见,同一个程序的其他文件是不可见,就算其他模块建立了同名函数定义的话 也不会引起重复定义的错误

C++关键字之const、inline、static、extern C++关键字之const、inline、static 阅读详情

相关推荐

【乐企-工具篇】生成发票左上角二维码

【代码】【乐企-业务篇】生成发票左上角二维码。

九七的博客 707

9月4日课后笔记

9月4日课后笔记 不定长参数 函数的返回值 文档字符串的说明 函数的作用域 命名空间 递归函数 标题

weixin_42469379的博客 332

C/C++ 静态代码检查工具cppCheck

Cppcheck是一个用于C/C++代码的静态分析工具,它可以帮助开发者检测代码中的错误;Cppcheck可以检测出许多类型的错误,包括语法错误、未使用的函数、内存泄漏、未初始化的变量等;Cppcheck还支持用户自定义规则,这使得开发者可以根据自己的需求定制Cppcheck的行为;使用--suppress如果你想要忽略某些警告,可以在命令行中使用 --suppress 选项。

贝勒里恩的博客 4946

嵌入式的C/C++:深入理解 inline 、extern与 extern “C“的用法与特点

在嵌入式开发中,C 和 C++ 是最常用的编程语言,特别是在高性能和低资源的硬件环境中,合理使用语言特性显得尤为重要。inline、extern 和 extern "C" 是嵌入式开发中的三大关键关键词,它们直接影响代码的性能、模块化设计以及跨语言的互操作性。然而,很多开发者对这些关键词的作用、使用场景以及注意事项了解不够全面,甚至可能在实际项目中导致难以察觉的错误。本文将从嵌入式开发的视角,深入剖析 inline、extern 和 extern "C" 的用法与特点,帮助您在项目中灵活运用,编写更高效、更

wallwayj的博客 1643

Linux | Ubuntu18.04安装WIFI6 AX201驱动完整教程

本节介绍了如何在Ubuntu18下安装AX201驱动的教程。

九七的博客 8880

触摸芯片RM1015B基本使用方法

RM1015B触摸芯片使用指南:该芯片采用4通道设计(实际使用3通道),通过I2C接口通信(设备地址0x2B)。硬件设计需注意中断/复位引脚复用,需上拉处理。软件配置包括初始化、中断处理和定时器扫描,通过设置各通道阈值(0-300W)调节灵敏度,值越小越灵敏。调试时可调用rm1015B_debug_func()输出波形数据。典型应用场景包括接近检测和手势识别,中断触发后需在8ms内响应。特别注意不同通道的寄存器映射关系及校准流程,确保检测准确性。

云淡风轻 176

【c++】inline、extern和static

关键字作用使用场景链接性内存分配inline建议编译器将函数或变量进行内联展开,减少函数调用开销;支持inline变量小型频繁调用的函数,C++17及以后版本的内联变量对函数:默认为inline(多定义在头文件);对变量:内联变量具有外部链接自动存储持续性(函数内联);静态存储持续性(内联变量)extern声明变量或函数在其他文件中定义,表示外部链接;用于变量的多重声明跨文件访问变量或函数,全局变量的多文件共享外部链接根据变量类型决定static控制变量或函数的作用域和生命周期;

m0_74282926的博客 1565

K8S部署Java项目(Gitlab CI/CD自动化部署终极版)

每个人都有惰性,但不断学习是好好生活的根本,共勉!

感谢阅读 6954

c++编译器的那点事-链接属性,extern,inline

cpp项目里,每个.,cpp文件将其所包含的头文件合并后,称为一个转换单元!编译器在编译每个转换单元时,会将源代码翻译成汇编代码,然后再将汇编代码翻译成机器码,并将生成的机器码和一些元数据(如符号表、调试信息等)打包成目标文件(.obj)。然后经过链接器将这些obj文件链接在一起生成exe文件。例如A.obj有定义在其他obj文件定义的函数,那么链接时候就会去对应的obj文件寻求定义来建立链接!程序中的变量,函数,结构等都有名字,这些名字具有不同的链接属性,链接器就是根据链接属性把各个obj链接起来。

m0_54984588的博客 1269

多源异构数据融合(Kaggle+Google Trends联合分析)

本文详细介绍了如何利用Python实现多源异构数据融合,以Kaggle电商销售数据与Google Trends搜索指数为例,展示了数据清洗、预处理、时间对齐、数据合并、相关性分析、回归建模和可视化全过程。数据预处理与内存优化通过分块加载、数据类型转换和缺失值处理,有效降低了大规模数据在内存中的占用,并确保数据质量。时间对齐与数据融合策略采用重采样与内连接方法对齐不同数据源的时间维度,实现了高质量数据的融合,为后续联合分析奠定基础。模型构建与分析。

闲人编程的博客 1013

SerDes学习笔记:接收机CTLE均衡架构示例(USB3.1、PCIe3.0\4.0\5.0)

本文分析了USB3.1和PCIe标准中连续时间线性均衡器(CTLE)的设计演进。USB3.1Gen1采用一阶CTLE,其传递函数在长信道下具有有源滤波器特性;Gen2版本延续类似架构,通过Adc参数调节零点频率。PCIeGen3/4保持一阶结构但调整极点位置,Gen5升级为二阶传递函数,扩展Adc调节范围至-5dB~-15dB。研究表明,CTLE能有效改善信号完整性,通过参数优化可平衡信号衰减与码间干扰抑制。

一只豌豆象的博客 623

C语言:inline,static inline

inline 函数被调用时,需要出栈入栈。当函数频繁被调用时,则不断地有函数出栈入栈,会造成栈空间或栈内存的大量消耗。所以引入了inline。 inline: 在函数声明或定义中函数返回类型前加上关键字inline,即可以把函数指定为内联函数。 内联函数: 建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展)。也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方(上下文),从而节省...

houxiaoni01的博客 1万+

3、提升管壳式换热器能效:双螺旋盘管的应用研究

本研究探讨了在管壳式热交换器中应用双螺旋盘管以提升能效的可行性。通过实验对比双螺旋与单螺旋盘管的热传递效率,结果显示双螺旋盘管达到54.33%的效率,显著优于单螺旋的48.88%。双螺旋结构不仅增大了换热面积,还因产生剪切应力而减少结垢,延长运行周期。采用NTU方法评估热传递性能,验证了该设计在工业应用中的高效性与实用性,建议在制冷、空调、石油精炼等领域推广使用。

k8s6orchestrator的博客 106

CPP修饰符extern、static和inline

C++ static inline和extern

weixin_41985845的博客 1370

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

文件包含 static inline,extern inline

文件包含——————————————————————————————————————符号                      意义——————————————————————————————————————static        1.在函数内部,表示该变量的值在各个调用间一直保持延续性                2.在函数这一级,表示该函数只对本文本可见———————————

legion8169的专栏 3029

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C语言中static const extern volatile inline关键字

在 C 语言中,volatile 关键字用于提醒编译器:被修饰的变量可能会被意外修改(如被硬件、中断服务程序等外部因素改变),因此编译器不能对该变量的读写操作进行优化(如缓存到寄存器、重排指令等),必须每次都直接从内存中读取或写入。硬件设备的寄存器(如传感器数据、定时器计数等)的值可能会被硬件自动修改,此时必须用 volatile 修饰,否则编译器可能会优化读取操作(比如只读取一次并缓存到寄存器,忽略后续硬件的修改)。建议而非强制:inline 是对编译器的 “建议”,而非 “命令”。

Zhangh___的博客 1335

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C 内联函数:static inline 和 extern inline 的含义

C 内联函数:static inline 和 extern inline 的含义 一,前言     Linux之父linus曾说过:“static inline” means “we have to have this function, if you use it, but don’t inline it, then make a static version of it in this compilation unit”. “extern inline” means “I actually have a

Mr顺 1270

inline,static inline

本文摘自网络各处,具体出处已不可考 inline 函数被调用时,需要出栈入栈。当函数频繁被调用时,则不断地有函数出栈入栈,会造成栈空间或栈内存的大量消耗。所以引入了inline。 inline:在函数声明或定义中函数返回类型前加上关键字inline,即可以把函数指定为内联函数。 内联函数:建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展)。也就是说建议编译器将指定的函数体插入并取代每一处调用...

A_BCDEF_的博客 3372

C++的翻译单元和static、extern、inline

C++的翻译单元和static、extern、inline

DaDianJiShiQi的博客 920

extern inline和static inline

extern inline表示该函数是已声明过的了.由于函数本身可以声明多次,所以extern对函数的影响仅仅把函数的隐藏属性显式化了.  extern 对于非函数的对象是有用的,因为对象声明时会带来内存的分配,而用 extern就表示该对象已经声明过了,不用再分配内存.  static是以前C的用法.目的是让该关键字标识的函数只在本地文件可见,同一个程序的其它文件是不可见该函数的.换句话说,

wbainngg123的专栏 573

extern, static, const 和 inline

在使用 Objective-C 编程的时候,偶尔也会使用到 C 语言的一些特性,extern、static、const 和 inline 这四个关键词是我对于其含义较为模糊的四个关键词,特写一篇笔记用来温习一下。 extern 要理解 extern 关键字的作用,首先要明白声明和定义的区别。定义变量时,编译器为该变量分配内存,并可能还将其内容初始化为某个值。声明变量时,编译器要求在其他地方定义变量...

weixin_34395205的博客 253

extern c作用_C++中inline, extern, static潜在的陷阱

关注“脚本之家”,与百万开发者在一起作者 |focuscode出品 | 脚本之家(ID:jb51net)公司有位C++标准委员会的大佬,一年偶尔会有几次技术分享。这是其中的一次,对照着材料学习了演讲视频,以下就是这次分享的内容。相信inline, extern, static这三个关键字对于C++程序员是非常熟悉的,但有些时候,其中隐藏的陷阱,可能会给你的程序带来一些很难诊断的问题。...

weixin_39968760的博客 246

C++语法|C++八股|const、static、define、inline、constexpr、volatile、extern、std::atomic

变量:当用于变量时,constexpr指示该变量的值在编译时是已知的,并且是常量表达式。函数:当用于函数时,constexpr指示函数可以在编译时求值,前提是所有参数都是常量表达式,并且函数体符合constexpr函数的要求。

糖炒栗子 1028

内联函数:static inline 和 extern inline 的含义

内联函数:static inline 和 extern inline 的含义 前置简短概述 引入内联函数的目的是为了解决程序中函数调用的效率问题。 函数是一种更高级的抽象。它的引入使得编程者只关心函数的功能和使用方法,而不必关心函数功能的具体实现;函数的引入可以减少程序的目标代码,实现程序代码和数据的共享。但是,函数调用也会带来降低效率的问题,因为调用函数实际上将程序执行顺序转移到函数所...

phenixyf的专栏 396

C/C++中inline/static inline/extern inline的区别及使用

C/C++中inline/static inline/extern inline的区别及使用

hddryjv的博客 320
上一篇: 基于MQTT提高客户端和服务器之间推送可靠性
下一篇: 学习笔记--架构基础知识
Coding_Physical
博客等级 码龄12年 160粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值