不需要在头文件中定义函数进行内联?

放大 Myrtveit

为了让编译器内联函数调用,它需要有完整的定义。如果函数没有在头文件中定义,编译器只有声明,不能内联函数,即使它想内联。

因此,我通常定义我认为编译器可能希望内联到头文件中的短函数。

通过全程序优化(/LTCG/GL),是否不再需要在头文件中定义函数以允许内联它们?

除了在某些情况下使用模板之外,还有其他原因在头文件中定义函数吗?

斯特凡诺斯·巴齐奥蒂斯

一个原因是因为您想要分发单头库,例如STB此外,链接速度非常慢,即使使用黄金和 LLD 等新链接器也是如此。因此,您可能希望避免链接,而是将所有内容包含在一个文件中。

这可以超越链接,而只是函数定义。这个想法通常只包含一次以减少编译时间,因为 C++ 编译模型非常糟糕和缓慢,部分原因是需要重新编译。这就是统一构建的思想。

如果您认为统一构建听起来超级愚蠢,请考虑育碧(至少曾经)使用它

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在进行中,如果我们要使用该文件中定义的功能,是否不需要在同一目录中导入另一个文件?

Java日志记录框架,它不需要在每个类上进行LOGGER声明

不需要的头文件WinGDI.h

C ++,私有函数真的需要在头文件中吗?

为什么yield函数在Python中不需要括号?

Spring在构造函数中不需要的属性?

在C ++(类)中,是否总是需要在头文件中声明函数?

Kotlin函数不需要,但定义为其他类型

头文件中的静态内联函数

为什么必须内联在类外部(但在头文件中)定义的类成员函数?

如何复制不需要在Gulp中编译的文件?

WP REST API不需要在POST上进行身份验证

Rails:不需要在首页上加载js文件

为什么我们不需要在Python函数中实际使用全局变量之前就定义它们?

在Firestore中,如何忽略不需要的输入以进行创建?

为什么C ++头文件不需要包含实现文件(.cpp)?

C ++构造函数中不需要的隐式转换

不需要定义基类析构函数吗?

Rspec不需要文件

不需要在node.js中的csv lib

如何使基于SDL构建的库不需要SDL头文件

从字符串中删除不需要的字符的函数

Map不需要在Scala中推断codomain?

内联 SVG 代码中不需要哪些属性

调用函数中不需要“Nothing” - Kotlin

在 golang 中,在自定义类型上实现方法,因此不需要在 Println 中进行转换

为什么在包含标准库中的头文件时不需要向编译器传递相应的源文件?

不需要在头文件中定义函数进行内联?

为什么内联函数内部调用的函数不需要定义?