我正在使用函数。 这是一个好习惯,我在另一个.cpp文件中编写该函数,并将其包含在主文件中? 像这样:#include“lehel.cpp”。
这样可以,还是应该直接在main.cpp文件中编写函数?
答案 0 :(得分:4)
既定的做法是将可重用函数的函数声明放在.h
或.hpp
文件中,并将该文件包含在需要它们的位置。
Foo.cpp中
int foo()
{
return 42;
}
foo.hpp
#ifndef FOO_HPP // include guards
#define FOO_HPP
int foo();
#endif // FOO_HPP
的main.cpp
#include "foo.hpp"
int main()
{
return foo();
}
包含.cpp
文件有时仅用于从声明中拆分模板定义,但即使这种使用也存在争议,因为存在创建对的计数方案(foo_impl.hpp
和foo.hpp
)或(foo.hpp
和foo_fwd.hpp
)。
答案 1 :(得分:4)
一个好的做法是将功能分离到单独的软件单元中,以便可以重复使用它们,以便对一个单元的更改对其他单元几乎没有影响。
如果lehel.cpp
包含main
,则表示lehel.cpp
中的任何更改都会强制编译main
。但是,如果lehel.cpp
是单独编译并链接的,则对lehel.cpp
的更改不会强制重新编译main
;只联系在一起。
恕我直言,头文件应包含有关如何使用这些功能的信息。源文件应包含函数的实现。源文件中的函数应与主题相关联。此外,保持源文件的大小将减少注入缺陷的数量。
答案 2 :(得分:0)
标头文件(.h
)旨在提供多个文件中所需的信息。类声明,函数原型和枚举等内容通常都在头文件中。总之,"定义"。
代码文件(.cpp
)旨在提供只需要在一个文件中知道的实现信息。通常,函数体和其他模块应该/永远不会访问的内部变量属于.cpp
文件。总之,"实施"。
要问自己确定属于哪个地方的最简单的问题是"如果我改变了这个问题,我是否必须更改其他文件中的代码以使事情再次编译?"如果答案是"是"它可能属于头文件;如果答案是"否"它可能属于代码文件。
https://stackoverflow.com/a/1945866/3323444
要回答您的问题,作为程序员,当cpp为您提供要包含的头文件时添加函数将是一种不好的做法。
答案 3 :(得分:0)
通常没有完成(并且使用了标题)。但是,有一种称为“合并”的技术,这意味着将所有(或一堆).cpp文件包含在一个主.cpp文件中,并将其构建为一个单元。
有时可能会这样做的原因是:
我曾经用它来改进更大项目的编译时间 - 基本上创建了多个(8)基本源文件,每个文件都包含部分.cpp文件,然后并行构建。在完全重建时,该项目的构建速度提高了约40%。
然而,如上所述,更改单个文件当然会导致重建该组合单元,这在持续开发过程中可能是一个缺点。