问题标签 [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++ - 如何编写带参数的 lambda 函数?C++
我想用 lambda 函数调用一个方法(对于这个例子 std::thread 构造函数),传递 int 值:
我不知道如何正确编写这样的函数,我收到此错误:C2064: term does not evaluate to a functiontaking 0 arguments
sql - Inline SQL function which sometimes must update database
Is it possible to create a function/procedure, which could be used in a SQL statement like this:
INSERT INTO Journal(ProductID,Quantity) VALUES(LookupOrCreateProduct('12345678'),5)
LookupOrCreateProduct
should look up a product table by string (barcode) and:
* If barcode is found - return Product ID
* If barcode is not found - create a new record in Products table with new barcode and return its ID
I explored SQL Server functions, but they do not allow INSERT
s or any other database modification inside function body. Stored procedures can return values, but they can only be of int
type. My ID column is bigint
. Another option is to use output parameter but then it is not clear to me, how can I inline it in SQL statement. Thank you.
c++ - extern "C" 内联函数
此代码会导致未定义的行为吗?
header.h
def.c
use.c
main.cpp
inline
这是一个必须在 C 和 C++ 中都使用函数的程序示例。如果def.c
被删除并且foo
没有在 C 中使用,它会起作用吗?(这是假设 C 编译器是 C99。)
此代码在编译时有效:
foo
只出现extern_C_inline
一次,因为编译器在不同目标文件中输出的不同版本被合并,但我想知道这种行为是否由标准指定。如果我删除并使其extern
定义,那么它将多次出现,因为编译器在每个编译单元中输出它。foo
static
foo
extern_C_inline
c++ - 内联函数体的潜在评估和模板成员的实例化
何时将标记为 inline 的函数中包含的表达式视为“可能已评估”?
a.cpp
b.cpp
如果定义内联函数后立即将表达式视为“可能评估”,则应实例化模板,并且我希望$(CCC) -c a.cpp; $(CCC) -c b.cpp; $(CCC) a.o b.o -o bin
链接成功。相反,如果声明为 inline 的函数中的表达式仅在此类函数本身变为 odr-used 时才变为“潜在评估”,那么我预计$(CCC) -c a.cpp; $(CCC) -c b.cpp; $(CCC) a.o b.o -o bin
在链接步骤期间会失败。
到目前为止,我已经测试了 xl C++ 12(链接成功)和各种版本的 gcc + clang 3.5(所有这些都无法链接)。
哪种行为是正确的?我在这里错过了第三种选择吗?
c - Keil ARM C 编译器:内联函数的麻烦
我正在将实时内核TNeoKernel移植到 Cortex-M 架构,所以我已经安装了 Keil 并正在尝试构建内核。但是,我遇到了意想不到的问题:编译器似乎无法处理inline
函数。这是简单的代码:
编译器的输出如下:
如果我删除inline
关键字,它会编译并工作。
在 ARM Compiler 的文档中,我找不到任何关于inline
函数的信息。所以,只是为了确保:inline
ARM 编译器真的不支持关键字吗?太不可思议了,所以我决定问问。
我static inline
在内核的平台无关代码中有很多函数,那么,让它支持 ARM 编译器的最好方法是什么?在我的脑海中,我只有两个想法:
- 创建与体系结构相关的宏,例如
TN_INLINE
,对于 ARM 编译器,它应该扩展为空; - 将非常小的 1 行函数转换为宏。
php - codeigniter 可以支持内联函数吗?
我们可以在 Codeigniter 的另一个函数中编写多个函数吗?这是我的控制器
根据我的控制器,myproduct() 中有 2 个内联函数。我的目标是将网址显示为
我已经尝试过了,但它给了我一个错误
第 5 行是
c++ - “内联”关键字与“内联”概念
我问这个基本问题是为了让记录变得直截了当。已经提到了这个问题及其目前接受的答案,这并不令人信服。然而,投票第二多的答案提供了更好的洞察力,但也不是完美的。
在阅读下面的内容时,请区分inline
关键字和“内联”概念。
这是我的看法:
内联概念
这样做是为了节省函数的调用开销。它更类似于宏样式的代码替换。没有什么可争论的。
inline
关键字_
感知A
inline
关键字是对编译器的请求,通常用于较小的函数,以便编译器可以对其进行优化并进行更快的调用。编译器可以随意忽略它。
我对此提出异议,原因如下:
- 较大的递归函数没有内联,编译器会忽略该
inline
关键字。 inline
无论是否提及关键字,优化器都会自动内联较小的函数。
很明显,用户无法控制使用关键字内联的函数inline
。
知觉乙
inline
与内联的概念无关。将大/递归函数放在inline
前面将无济于事,较小的函数也不需要它,因为它是内联的。的唯一确定性用途
inline
是维护One Definition Rule。
即,如果声明了一个函数,inline
那么只有以下内容是强制性的:
- 即使在多个翻译单元中找到它的主体(例如在多个
.cpp
文件中包含该标头),编译器也只会生成 1 个定义并避免多符号链接器错误。(注意:如果该函数的主体不同,则它是未定义的行为。) - 函数的主体
inline
必须在所有使用它的翻译单元中可见/可访问。换句话说,在任何一个文件中声明和定义inline
函数都会导致其他文件出现“未定义符号链接器错误”.h
.cpp
.cpp
判决
“A”的看法是完全错误的,“B”的看法是完全正确的。
在这方面有一些标准引用,但是我期待一个能从逻辑上解释这个判断是真还是假的答案。
c - C 中的仅标头和仅静态内联库
我在 C 中编写了仅包含头文件的小型库和仅包含static
-inline
的库。当应用于大型库时,这会是一个坏主意吗?还是仅使用标头版本的运行时间可能会更快?好吧,不考虑明显的编译时间差异。
c - 我们应该使用宏、内联函数还是只使用普通函数并信任编译器?
将以下函数定义为宏或inline
函数会更好吗?还是使用普通函数并信任编译器以保持(在我看来)更好的可读性更好?
c - 试图理解内联函数
我正在研究以下功能:
我只想知道是什么让这个特性,即计算和存储在变量中t
。