我想用 C++ 编写一个具有最佳运行时性能的应用程序。所以我决定内联所有方法。
我有提到的问题here .
如果我在 MSVC 2015 和 MinGW 编译器中的 cpp 文件中使用 inline 关键字,它会给我 undefined reference 错误。
但是如果我想在头文件中内联所有方法,则不需要 cpp 文件。真的吗?这是为什么?
最佳答案
关键字 inline
在当今时代与性能无关,与内联函数无关!
事实上,它与单一定义规则(或 ODR)有关!
ODR 声明 C++ 程序中的每个函数只能有一个定义。
这意味着以下将产生错误:
文件.cpp
void fun() {}
main.cpp
void fun() {}
这是一个错误,因为在两个不同的翻译单元(.cpp
文件)中存在同一个函数的两个定义,这违反了 ODR。
现在 inline
关键字可以让您绕过这个问题。它允许你在多个翻译单元中定义同一个函数,只要函数体完全一样即可!这允许您在头文件中定义函数,然后可以将其包含到多个 .cpp
文件中。
话虽这么说。您描述的内容不会导致性能下降。编译器会在适当的时候内联正确的函数。它将使你的代码运行得比你自己做的更快。
关于c++ - 在 C++ 中内联所有方法,没有 Cpp 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40366796/