Questions tagged «inline-functions»

14
内联函数在C ++中的好处?
在C ++中使用内联函数的优点/缺点是什么?我看到它只会提高编译器输出的代码的性能,但是使用当今优化的编译器,快速的CPU,巨大的内存等(不像1980年那样,当时内存不足,所有内容都必须容纳100KB内存),他们今天真的有优势吗?

5
什么时候在Kotlin中使用内联函数?
我知道内联函数可能会提高性能并导致生成的代码增长,但是我不确定何时使用它是正确的。 lock(l) { foo() } 代替为参数创建函数对象并生成调用,编译器可以发出以下代码。(来源) l.lock() try { foo() } finally { l.unlock() } 但是我发现kotlin没有为非内联函数创建函数对象。为什么? /**non-inline function**/ fun lock(lock: Lock, block: () -> Unit) { lock.lock(); try { block(); } finally { lock.unlock(); } }

6
extern内联有什么作用?
我知道,这inline本身就是对编译器的建议,它可以酌情决定是否内联函数,也可以生成可链接的目标代码。 我认为这样static inline做相同(可以内联或不可以内联),但是在内联时不会产生可链接的目标代码(因为没有其他模块可以链接到它)。 哪里extern inline适合图片? 假设我想用一个内联函数替换一个预处理器宏,并要求该函数内联(例如,因为它使用了应该为调用者解析但不为该调用函数解析的__FILE__和__LINE__宏)。也就是说,如果函数未内联,我想查看编译器或链接器错误。不extern inline这样做呢?(我认为,如果没有,除了坚持使用宏之外,没有其他方法可以实现此行为。) C ++和C之间有区别吗? 不同的编译器供应商和版本之间有区别吗?

9
内联函数中的静态变量
我有一个在头文件中声明和定义的函数。这本身就是一个问题。如果未内联该函数,则使用该标头的每个翻译单元都将获得该函数的副本,并且当它们链接在一起时,它们将被复制。我通过使函数内联来“修复”该问题,但恐怕这是一个脆弱的解决方案,因为据我所知,即使指定了“ inline”关键字,编译器也不保证内联。如果不是这样,请纠正我。 无论如何,真正的问题是,此函数内的静态变量会发生什么?我最终得到多少份?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.