代码之家  ›  专栏  ›  技术社区  ›  Matin Lotfaliee

内联C++中的所有方法,没有Cpp文件?

  •  0
  • Matin Lotfaliee  · 技术社区  · 8 年前

    我想用C++编写一个运行时性能最好的应用程序。所以我决定内联所有方法。

    我提到了这个问题 here .

    如果在MSVC 2015和MinGW编译器中使用cpp文件中的内联关键字,则会出现未定义的引用错误。

    2 回复  |  直到 7 年前
        1
  •  3
  •   DeiDei    8 年前

    inline 与当今时代的性能无关,与内联函数无关!

    事实上,它与一个定义规则(或ODR)有关!

    ODR规定,C++程序每个函数只有一个定义。

    这意味着以下操作将产生错误:

    file.cpp

    void fun() {}
    

    main.cpp

    void fun(){}
    

    这是一个错误,因为在两个不同的平移单位中有两个相同函数的定义( .cpp 文件),这违反了ODR。

    现在 在线 关键字允许您绕过此问题。它允许您在多个平移单位中定义相同的函数,只要函数体完全相同!这允许您在头文件中定义函数,然后可以将其包含在多个文件中 .cpp 文件夹。

    话虽如此。你所描述的将会 导致性能下降。编译器将在适当的时间内联正确的函数。它将使您的代码运行速度超过您自己的速度。

        2
  •  1
  •   Community CDub    7 年前

    不,这不是真的。主函数不能按定义内联。 See this link for more information.