提问者:小点点

为什么要将函数声明和定义放在单独的文件中?


在CodeAcademy关于函数的课程中,如果您要在程序中调用函数,他们教您使用三个文件:

>

  • int main()文件是C++程序(我猜。。。)的程序部分不可缺少的一部分,文件扩展名为。cpp

    用于声明函数的头文件,文件扩展名为。hpp。

    带有函数定义的单独文件,文件扩展名为。cpp

    在头文件中单独声明和定义函数,并简单地将它们包含在int main()上面,这样做是否可行? 对我来说,声明和定义的单独文件似乎会混淆一个更大的项目中的问题。


  • 共3个答案

    匿名用户

    在大型项目中,您通常只需要类型和函数声明,而不需要定义。 例如在其他头文件中。 如果所有定义都在头中,那么包含多个其他头及其可传递包含的组合结果将导致巨大的编译单元。 这会显著影响编译时间,因为编译器需要处理的代码量会激增到超出需要的数量级。 这也会影响链接时间,因为链接器在丢弃包含在更多对象文件中的重复项时会有更多的工作要做。

    您还很容易遇到ODR(One Definition Rule)问题,除非所有内容都标记为内联

    匿名用户

    在大型项目中,许多文件可能需要函数声明,但函数定义应该只编译一次。 它与链接时所有需要它的地方结合在一起。

    匿名用户

    一个小型的C++程序可以是(并且通常是由)一个单一的翻译单元,例如几千行的C++代码。 在这种情况下,您可以有一个myprog.ccC++源文件(里面有几个#include-s)。

    但是当你在一个更大的程序上工作时,在团队中,有几个C++源文件是很方便的。

    有些C++文件是由另一个程序(称为元编程)生成的,可能有一百万行的C++行。