内联所有的方法在c++中,没有Cpp文件
Inline all methods in C++, No Cpp file?
我想用c++编写一个具有最佳运行时性能的应用程序。所以我决定内联所有的方法。
我有这里提到的问题。
如果我在MSVC 2015和MinGW编译器中使用内联关键字在cpp文件内,它会给我未定义的引用错误。
但是如果我想在头文件中内联所有方法,就不需要cpp文件了。这是真的吗?为什么呢?
关键字inline
与当今时代的性能无关,也与内联函数无关!
事实上,它与单一定义规则(或ODR)有关!
ODR规定c++程序中每个函数只能有一个定义。
这意味着下面的命令将产生一个错误:
file.cpp
void fun() {}
main.cpp
void fun() {}
这是一个错误,因为在两个不同的翻译单元(.cpp
文件)中有相同函数的两个定义,这违反了ODR。
现在inline
关键字允许您绕过这个问题。它允许您在多个平移单位中定义相同的函数,只要函数体完全相同!这允许您在头文件中定义函数,然后可以将其包含在多个.cpp
文件中。
话虽如此。您所描述的将而不是导致性能下降。编译器将在适当的时间内联正确的函数。它将使你的代码运行得比你自己做的更快。
不,这不是真的。根据定义,main函数不能内联。
相关文章:
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- 有没有办法简单地从 GPU 调用多个 cpp 输出文件?
- 是否可以使用 libclang python 解析 cpp 文件中没有标头的函数原型
- 在C++中使用没有合作伙伴Class/Cpp文件的头文件是否实用
- C2011: 'Card':"类"类型重新定义(尽管使用了包含保护并且没有在文件中重新定义.cpp类)
- 有没有办法让这个模板在 cpp 中工作?
- 有没有办法从 cpp 中的文本生成条形码图像?
- 如何在没有缓冲的情况下使用 parquet-cpp 写入面向流/行的数据?
- 在 cpp proj 中没有这样的文件 pyconfig.h
- 在没有多个定义的标头文件中包括一个CPP文件
- 我运行sudo g++ main.cpp,但它没有运行程序
- 有没有办法在Visual Studio中对CPP文件进行数字签名
- cpp 中的析构函数是否自动调用?即使析构函数没有提及非动态变量,它们也会被删除吗?
- 致命错误:auc_.cpp:2:10:致命错误:omp.h:没有此类文件或目录
- 如何拥有一个没有cpp的头文件
- 如何在没有cpp文件的情况下使用头文件
- 内联所有的方法在c++中,没有Cpp文件
- 用*.h和*编译扩展文件.所以没有*.cpp资源代码
- 整个类在头文件中没有.cpp文件
- 没有.cpp文件的c++类,没有内联函数