【发布时间】:2026-02-01 15:30:02
【问题描述】:
在 codeacademy 的函数课程中,如果你要在程序中调用函数,他们会教你使用三个文件:
int main()文件是我通过反复试验发现的,它是 c++ 程序(我猜...)的程序部分不可或缺的一部分,文件扩展名为 .cpp用于 DECLARING 函数的头文件,文件扩展名为 .hpp。
带有函数定义的单独文件,文件扩展名为 .cpp
在头文件中单独声明和定义函数并将它们简单地包含在int main()之上是否可以工作?对我来说,声明和定义的单独文件似乎会混淆大型项目中的问题。
【问题讨论】:
-
在工作中,我编写了 50+ 千行长的程序。想象一下,如果所有东西都在一个文件中,编译需要多长时间。我绝对不会做任何事情。
-
其实恰恰相反。即使是一个中等规模的项目也可能有几十个.cpp 文件,其中有几个调用函数由另一个源文件定义。要调用一个函数,它必须被声明,但是(除了像内联函数这样的特殊情况,不应该乱用)在整个项目中不能多次定义函数。仅将头文件用于声明允许每个源文件包含每个头文件而不是需要它。在标头中定义函数可防止该标头被项目中的多个源文件包含。
-
@drescherjm 是的。我处理的应用程序大约有 600k 行代码,如果所有内容都在标头中,那么构建将是一场噩梦。目前,在 20 核/40 线程机器上完整构建大约需要 5 分钟,但过去需要 10 分钟以上,并且编译时间的减少主要是通过将内容移出标头并删除不需要的包含来实现的。它在大型项目中产生了巨大的影响。
-
@dresherjm: GCC 有一些 C++ 文件,包含数万行 C++。它有效,人们正在为它做出贡献。比如它的
gcc/go/gofrontend/expressions.cc在GCC 10.1中有19711行,每天都是手写和编译的。
标签: c++ syntax header declaration definition