Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何包含和编译多个C++;文件夹?_C++_Compilation_Include - Fatal编程技术网

C++ 如何包含和编译多个C++;文件夹?

C++ 如何包含和编译多个C++;文件夹?,c++,compilation,include,C++,Compilation,Include,我有以下文件:classA.cpp,classA.h,classB.cpp,classB.h,和main.cpp 所有需要的库都包含在这两个.h文件中 在main.cpp中,我包括classA.cpp和classB.cpp 在classB.cpp中我包括classB.h和classA.cpp中它是classA.h 我用计算机编译它 g++main.cpp (+一些不重要的东西)而且它工作得很好 但我几乎可以肯定,在我们的讲座上,我们被告知要以不同的方式来做,很遗憾,我现在找不到。 这是包括和编译

我有以下文件:
classA.cpp
classA.h
classB.cpp
classB.h
,和
main.cpp

所有需要的库都包含在这两个.h文件中

main.cpp
中,我包括
classA.cpp
classB.cpp

classB.cpp
中我包括
classB.h
classA.cpp
中它是
classA.h

我用计算机编译它

g++main.cpp

(+一些不重要的东西)而且它工作得很好

但我几乎可以肯定,在我们的讲座上,我们被告知要以不同的方式来做,很遗憾,我现在找不到。

这是包括和编译在内的最好的方法吗?如果没有,那是什么?

简单的方法是:
g++main.cpp ClassA.cpp ClassB.cpp etc.cpp
更高级的方法是使用makefile。

通常,您不会将源文件包含到其他源文件中。事实上,我们有头文件的原因是,我们可以在所有文件中使用相同的声明,同时只编译一次定义

因此,您的
main.cpp
应该包括
classA.h
classB.h
,而不是
classA.cpp
classB.cpp

#include "classA.h"
#include "classB.h"

#include <algorithm> // and whatever else you need

int main()
{
    // your code....
}
对于更大的项目,您可以编写一个规则来自动从源文件创建依赖项,但我们可以如上所述手动生成依赖项

现在,执行时将运行正确的命令

make

为什么要包括来自其他cpp文件的cpp文件?你创造了一个巨大的翻译单位。你使用的是哪本C++书?这些都在里面解释过了。@TGar你总能在课外学到东西。互联网有很多资源,“我没有书”那就是你的问题了。没有书,没有讲稿。。。如果没有学习资源,你希望如何学习!你不能从参考书中学习语言。这里有一些书:《如何包含》对于一个如此问答来说太宽泛了。祝你好运!提出“最佳方式”的问题往往被视为“主要基于意见”。在一种情况下最好的东西不一定在其他任何地方都是最好的!您可能还应该提到在main.cpp中包含标题,而不是在cpp文件中。我想说,这并不是答案,因为它并没有“回答”您的问题,即
这是包含和编译的最佳方式吗?如果没有,那是什么?
这根本没有解释包括哪些内容。