问题标签 [inline-functions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 带有内联函数的 const 参数
我有一个inline
函数,它根据输入参数进行一些初始化,并且想知道我是否应该const
为参数使用关键字,这会使编译器进行更多优化吗?例如这个伪代码:
编辑:
关于同一件事的另一个问题。当这个函数init()
被调用时,调用会被这个函数内的整个代码替换,还是只替换为适合参数的部分。例如,如果b1
为真,调用是否会被替换为if (b1) { … }
或仅被替换为 if 括号中的代码。和同样的switch
?
这就是我的意思,如果添加const
会有所帮助。
c - C中的“inline”关键字何时有效?
好吧,标准并不能保证inline
函数实际上是内联的。必须使用宏才能获得 100% 的保证。编译器总是根据自己的规则来决定哪个函数是内联的还是不内联的,而不管inline
关键字是什么。
那么在inline
使用现代编译器(例如最新版本的 GCC)时,关键字何时会对编译器的工作产生实际影响?
c - -finline-limit GCC 编译器选项的确切行为
我正在使用 GCC 的编译器选项。我正在编译我的代码并对其进行分析以检查 CPU 周期的减少。当我增加N时,理想情况下,随着更大的函数被内联,我应该看到循环数减少。但我看到 CPU 周期增加了。为什么会这样?-finline-limit=N
swift - 有没有办法在 Swift 中声明内联函数?
我对 Swift 语言非常陌生。
我想像在 C++ 中一样声明一个内联func
函数,所以我的声明如下所示:
我想做这样的事情:
我试图在网上搜索,但我没有找到任何相关的东西,也许没有inline
关键字,但也许有另一种方法可以在 Swift 中内联函数。
ios - 何时在目标 C 中使用 NS_INLINE 函数
我意识到很多人有时会NS_INLINE
在他们的代码中使用函数。我很好奇他们如何知道何时使用它以及为什么使用它。
我读过INLINE
函数的指令比objective-C
函数少。我在这方面有点迷茫,因为我对 C 不太了解。
我见过的一些例子是:
我想在一些特定的地方使用它。例如。我需要得到所有的assets
画廊,然后检查他们是否有location
和date
。我想做那些功能checkLocation
和checkDate
功能inline
。
有些用户有5000张图片,用iPhone 4s时间增加到5分钟,太多了。我想重构代码,我读到有时inline
函数不是一个坏方法。
c - 如何使用 GCC 编译具有文字属性的内联 C 函数?
我有这样的inline
功能:
我在 Main 中这样使用:
我使用 GCC,我认为编译后的代码如下所示(在“源代码级别”中):
这是真的还是我错了?
c++ - 在与声明不同的文件中定义内联运算符
我想为我创建的类定义运算符,我希望运算符是内联的我还希望定义在.cpp
文件中,而声明在.h
文件中我试图这样做:
矢量3D.h
矢量3D.cpp
在_tmain
函数中调用函数:
我得到错误:
如果我删除inline
然后一切正常。如果我不调用函数,则编译成功。有没有办法inline
在声明函数的不同位置定义函数?
c - 将函数声明为非静态并实现为静态内联
我想为我的函数编写不同的实现,inline
有些不是。因此,我想将函数声明为:
然后还有:
我将DO_INLINE
在编译时指定。
MSVC 对此没有任何问题,但 GCC (4.1.1) 抱怨说我在声明一个静态函数后声明它是非静态的。如果我从多个编译单元中删除static
限定符,它将抱怨多个定义。#include "MyHeader.h"
(好像inline
函数是extern
。)我不太明白为什么编译器会出现这个问题。
我认为这应该是非常明显和明确的:
它不应该要求声明是static
.
也就是说,我正在努力避免解决我的问题:
编辑:这是一个更现实的用例:http ://codepad.org/OkC0Su3v
c++ - 以下内联函数是否保证具有相同的实现?
- 以下函数是否保证具有相同的实现(即目标代码)?
- 如果
Foo
下面是原始类型(例如int
),这会改变吗? - 这会随着 的大小而变化
Foo
吗?
按值返回:
通过引用返回:
就地修改:
c - 两个c文件之间的全局内联函数
根据我之前提出的这个问题。我想知道如何inline
在全局范围内定义一个函数。
我想在 test.h 中声明 inline
函数,在 main.c中定义它并从 test.c中调用它。
main.c 和 test.c #include "test.h"
(代码示例请点击上面的链接)。
这基本上是用户可以启用/禁用的某种回调函数。并且只有一个文件应该定义函数。
我知道inline
这只是对编译器的一个建议,它对现代 CPU 并没有太大的影响,但这适用于 8 位微控制器,并且确实需要它。
编辑:
我在 test.c 中有一个函数,它调用这个内联函数。我只想用 main.c 中定义的函数体替换调用。我希望这是有道理的。