问题标签 [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.

0 投票
1 回答
753 浏览

c - 带有内联函数的 const 参数

我有一个inline函数,它根据输入参数进行一些初始化,并且想知道我是否应该const为参数使用关键字,这会使编译器进行更多优化吗?例如这个伪代码:

编辑:

关于同一件事的另一个问题。当这个函数init()被调用时,调用会被这个函数内的整个代码替换,还是只替换为适合参数的部分。例如,如果b1为真,调用是否会被替换为if (b1) { … }或仅被替换为 if 括号中的代码。和同样的switch

这就是我的意思,如果添加const会有所帮助。

0 投票
2 回答
485 浏览

c - C中的“inline”关键字何时有效?

好吧,标准并不能保证inline函数实际上是内联的。必须使用宏才能获得 100% 的保证。编译器总是根据自己的规则来决定哪个函数是内联的还是不内联的,而不管inline关键字是什么。

那么在inline使用现代编译器(例如最新版本的 GCC)时,关键字何时会对编译器的工作产生实际影响?

0 投票
1 回答
1594 浏览

c - -finline-limit GCC 编译器选项的确切行为

我正在使用 GCC 的编译器选项。我正在编译我的代码并对其进行分析以检查 CPU 周期的减少。当我增加N时,理想情况下,随着更大的函数被内联,我应该看到循环数减少。但我看到 CPU 周期增加了。为什么会这样?-finline-limit=N

0 投票
3 回答
26912 浏览

swift - 有没有办法在 Swift 中声明内联函数?

我对 Swift 语言非常陌生。

我想像在 C++ 中一样声明一个内联func函数,所以我的声明如下所示:

我想做这样的事情:

我试图在网上搜索,但我没有找到任何相关的东西,也许没有inline关键字,但也许有另一种方法可以在 Swift 中内联函数。

0 投票
1 回答
2149 浏览

ios - 何时在目标 C 中使用 NS_INLINE 函数

我意识到很多人有时会NS_INLINE在他们的代码中使用函数。我很好奇他们如何知道何时使用它以及为什么使用它。

我读过INLINE函数的指令比objective-C函数少。我在这方面有点迷茫,因为我对 C 不太了解。

我见过的一些例子是:

我想在一些特定的地方使用它。例如。我需要得到所有的assets画廊,然后检查他们是否有locationdate。我想做那些功能checkLocationcheckDate功能inline

有些用户有5000张图片,用iPhone 4s时间增加到5分钟,太多了。我想重构代码,我读到有时inline函数不是一个坏方法。

0 投票
1 回答
69 浏览

c - 如何使用 GCC 编译具有文字属性的内联 C 函数?

我有这样的inline功能:

我在 Main 中这样使用:

我使用 GCC,我认为编译后的代码如下所示(在“源代码级别”中):

这是真的还是我错了?

0 投票
2 回答
649 浏览

c++ - 在与声明不同的文件中定义内联运算符

我想为我创建的类定义运算符,我希望运算符是内联的我还希望定义在.cpp文件中,而声明在.h文件中我试图这样做:

矢量3D.h

矢量3D.cpp

_tmain函数中调用函数:

我得到错误:

如果我删除inline然后一切正常。如果我不调用函数,则编译成功。有没有办法inline在声明函数的不同位置定义函数?

0 投票
2 回答
524 浏览

c - 将函数声明为非静态并实现为静态内联

我想为我的函数编写不同的实现,inline有些不是。因此,我想将函数声明为:

然后还有:

我将DO_INLINE在编译时指定。

MSVC 对此没有任何问题,但 GCC (4.1.1) 抱怨说我在声明一个静态函数后声明它是非静态的。如果我从多个编译单元中删除static限定符,它将抱怨多个定义。#include "MyHeader.h"(好像inline函数是extern。)我不太明白为什么编译器会出现这个问题。

我认为这应该是非常明显和明确的:

它不应该要求声明是static.

也就是说,我正在努力避免解决我的问题:

编辑:这是一个更现实的用例:http ://codepad.org/OkC0Su3v

0 投票
2 回答
57 浏览

c++ - 以下内联函数是否保证具有相同的实现?

  • 以下函数是否保证具有相同的实现(即目标代码)?
  • 如果Foo下面是原始类型(例如int),这会改变吗?
  • 这会随着 的大小而变化Foo吗?

按值返回:

通过引用返回:

就地修改:

0 投票
4 回答
5129 浏览

c - 两个c文件之间的全局内联函数

根据我之前提出的这个问题。我想知道如何inline在全局范围内定义一个函数。

我想在 test.h 中声明 inline函数,在 main.c中定义它并从 test.c中调用它。

main.c 和 test.c #include "test.h"(代码示例请点击上面的链接)。

这基本上是用户可以启用/禁用的某种回调函数。并且只有一个文件应该定义函数。

我知道inline这只是对编译器的一个建议,它对现代 CPU 并没有太大的影响,但这适用于 8 位微控制器,并且确实需要它。

编辑:

我在 test.c 中有一个函数,它调用这个内联函数。我只想用 main.c 中定义的函数体替换调用。我希望这是有道理的。