谈谈oc中的内联函数

slgkaifa slgkaifa     2022-09-11     590

关键词:

内联函数

即在编译的时候将函数体替换函数调用。从而不须要将parameter,returnaddress进行push/pop stack的操作,

从而加速app的执行。然而,会添加二进制文件的大小。

技术分享


疑问:内联函数和非内联函数有非常大不同吗?

解答:对硬件硬性不大,但在性能上有影响。

   内联函数不能保证编译时候一定是内联的,内联不过告诉编译器请求内联。但编译器不一定内联。

 

内联函数的使用场景OC--->结构体CGRectMake--->在高速赋值的时候就是调用了其内联函数

CG_INLINE CGRect
CGRectMake(CGFloat x, CGFloaty, CGFloat width, CGFloatheight)
{
  CGRect rect;
  rect.origin.x = x;rect.origin.y= y;
  rect.size.width =width; rect.size.height= height;
  return rect;
}

//这会导致编译器为内联函数创建代码。而不是在堆栈上创建一个函数调用
CG_INLINE is a #define for static inline. This causes the compiler to create the code for thefunction inline, rather that creating a function call on the stack.
















go语言中的内联函数

原文链接:面试官:小松子知道什么是内联函数吗?前言哈喽,大家好,我是asong。今天与大家来聊一聊内联函数。虽然我们在开发中根本不需要考虑内联函数,其在编译器编译代码时会做优化,但是如果想分析更底层的技术,... 查看详情

内联函数

...是向编译器提出一个请求,编译器可以忽略这个请求。类中的内联1.声明并定义在类中的成员函数是自动inline的  查看详情

类中的静态内联函数

】类中的静态内联函数【英文标题】:Staticinlinefunctionsinclass【发布时间】:2014-03-3101:57:22【问题描述】:我想对我的数学函数进行分组。我的数学函数包括许多数学函数,包括“math.h”中的函数和一些常数值。它们不在类或命... 查看详情

C++ 中的内联函数

】C++中的内联函数【英文标题】:InlinefunctionsinC++【发布时间】:2010-08-2209:31:54【问题描述】:嗨,我是C++的新手。我确实阅读了内联函数并正确理解了它们。但是this网站说“如果我们在一个.cpp文件中编写内联函数的定义并从... 查看详情

内联表值函数中的 IF Else

】内联表值函数中的IFElse【英文标题】:IFElseinsideInlineTableValuedFunctions【发布时间】:2016-09-0513:53:30【问题描述】:是否可以使用IfElseInside内联表值函数。我有一个标量函数,我正在使用IfElseCondition但是,该查询需要太多时间来... 查看详情

lambda 是不是像 C++ 中的函数一样内联?

】lambda是不是像C++中的函数一样内联?【英文标题】:ArelambdasinlinedlikefunctionsinC++?lambda是否像C++中的函数一样内联?【发布时间】:2013-04-0214:00:58【问题描述】:编译器可以/是否内联lambda函数来提高效率,就像使用简单的标准... 查看详情

.cpp 文件中的 C++ 内联成员函数

】.cpp文件中的C++内联成员函数【英文标题】:C++inlinememberfunctionin.cppfile【发布时间】:2011-04-2822:10:06【问题描述】:我知道根据定义,内联成员函数应该放在标题中。但是,如果不可能将函数的实现放入头文件中怎么办?让我... 查看详情

内联函数,每个视图或函数中的列名必须唯一

】内联函数,每个视图或函数中的列名必须唯一【英文标题】:InlineFunction,Columnnamesineachvieworfunctionmustbeunique【发布时间】:2020-02-2612:47:34【问题描述】:我已经加入了这两个表,现在我想将该语句保存在函数中,以便我可以再... 查看详情

TSQL:避免内联函数中的 MAXRECURSION 限制

】TSQL:避免内联函数中的MAXRECURSION限制【英文标题】:TSQL:avoidMAXRECURSIONlimitinainlinefunction【发布时间】:2016-06-1509:14:50【问题描述】:我有这个函数,给定一个初始日期和最后一个日期,给出该范围内的相应年/月:CREATEFUNCTION[db... 查看详情

gcc 5.1 中的链接时间优化是不是足以放弃内联简单函数?

】gcc5.1中的链接时间优化是不是足以放弃内联简单函数?【英文标题】:Islinktimeoptimizationingcc5.1goodenoughtogiveuponinliningsimplefunctions?gcc5.1中的链接时间优化是否足以放弃内联简单函数?【发布时间】:2015-04-2322:32:06【问题描述】:... 查看详情

命名空间中的内联函数在 gcc 上的链接期间生成重复的符号

】命名空间中的内联函数在gcc上的链接期间生成重复的符号【英文标题】:inlinefunctioninnamespacegenerateduplicatesymbolsduringlinkongcc【发布时间】:2011-04-1509:25:12【问题描述】:我有一个带有内联函数的命名空间,如果有多个源文件将... 查看详情

类内的内联函数成员

...小并且可以节省编译时间时,将函数(普通函数而不是类中的方法)声明为内联是一种很好的做法。但是类中的内联方法怎么样我不明白类中内联方法的概念?如何定义它们以及它们是如何工作的。【问题讨论】:“当函数定义... 查看详情

.c 文件中的 C99 内联函数

】.c文件中的C99内联函数【英文标题】:C99inlinefunctionin.cfile【发布时间】:2013-04-2103:56:05【问题描述】:我在.c中定义了我的函数(没有头声明),如下所示:inlineintfunc(inti)returni+1;然后在下面的同一个文件中我使用它:...i=func(i... 查看详情

使用内联汇编器从 GCC 中的共享库调用函数

】使用内联汇编器从GCC中的共享库调用函数【英文标题】:CallfunctionfromsharedlibraryinGCCwithinlineassembler【发布时间】:2012-02-2219:41:12【问题描述】:我已经创建了共享库(将像插件一样使用)。有很多函数,比如aextern"C"long__attribute... 查看详情

为啥包装在函数中的 GAS 内联汇编为调用者生成的指令与纯汇编函数不同

】为啥包装在函数中的GAS内联汇编为调用者生成的指令与纯汇编函数不同【英文标题】:WhydoesGASinlineassemblywrappedinafunctiongeneratedifferentinstructionsforthecallerthanapureassemblyfunction为什么包装在函数中的GAS内联汇编为调用者生成的指令与... 查看详情

内联函数

...器支持内联函数。        C++中的const常量可以代替宏常数定义,如:constintA=3;<==>#defin 查看详情

如何在地图函数中使用 JSX 中的变量更改内联 CSS 样式?

】如何在地图函数中使用JSX中的变量更改内联CSS样式?【英文标题】:HowdoIchangeinlineCSSstylesusingavariableinJSXinsideamapfunction?【发布时间】:2018-11-2210:01:29【问题描述】:好的,所以我有一个映射函数,它通过一个数组运行,并在DOM... 查看详情

调用另一个文件的非命名空间中的函数的内联类方法

】调用另一个文件的非命名空间中的函数的内联类方法【英文标题】:Inlineclassmethodthatcallsafunctioninanonnamespaceofotherfile【发布时间】:2013-10-0105:03:27【问题描述】:MyClass的一个重要功能是快速调用其成员之一的方法;我试图鼓励... 查看详情