我正在处理一个项目,在头文件中有负载和大量代码.如果我使用Visual Studio,这不会是一个问题,因为它有预编译的头文件等,但这是
Linux GCC代码.
无论如何,它开始成为编译时的一个问题.当然,模板必须保留在标题等中,但是大部分代码都可以提取到实现文件中并作为静态库链接.所有项目都使用这些头文件并每次都进行编译,因此创建静态库是有意义的.
头文件中的实现是内联的,还是只是一个提示,就像内联关键字一样?这段代码非常重要,我担心将这些实现移出标题.如果我使用inline关键字而不是在头文件中实现,我可以实现相同的功能吗?
**更新**
我知道内联只是对编译器的一个提示.我无法控制项目中的所有内容,我只想将标题中的所有内容移动到库中,而不会影响性能.这实际上是尝试它看到的东西?我只想保持性能完全相同,但增加编译时间.
最佳答案 inline关键字只是编译器的一个提示,它可能希望内联该函数.它的真正目的是允许您合法地“违反”一个定义规则.
为了内联函数,它的主体必须在调用点处可见,这通常意味着如果将函数移动到实现文件,它可能不再被内联.
但请记住,无论如何,标题中的大多数函数都不会被内联.还要考虑到,在许多情况下,由于各种特定于体系结构的问题,内联函数实际上可能比调用函数慢.