是否有可能在一个项目(souce文件夹)中有超过1个.cpp文件?如果是的话.cpp文件如何通信?

问题描述:

所以,我正在使用C++。我知道如何将.h文件与.cpp链接(很简单)。我遇到的问题是,我不想将所有的代码写入一个.cpp文件,这使得它太大,组织变成了一个喧嚣。在其他语言(c#和python)中,我能够在另一个文件中编写一个类,然后从它中派生孩子,就像C++中的头文件一样,但.h文件仅用于声明函数,.cpp是所有内容正在编码。因此,没有一个大的.cpp文件,我可以将它编码到多个.cpp文件中吗?是否有可能在一个项目(souce文件夹)中有超过1个.cpp文件?如果是的话.cpp文件如何通信?

+8

几乎所有的C++项目由多个的.cpp和多个.h文件中。 –

+2

小心使用语言。 “链接”在C和C++的上下文中有着非常特殊的含义。我不认为你理解链接(或者你不会问这个问题)。相反地​​说,你知道如何将.h文件包含到.cpp文件中。 – RPGillespie

+0

http://www.cprogramming.com/compilingandlinking.html – RPGillespie

当然。你有一个头文件和相关的声明,然后你可以有多个源文件来实现它们。你只需要确保它们都链接在一起。

这是可能的,因为当你将它们连接在一起时,定义来自哪个翻译单元并不重要,唯一重要的是它们存在。如果您在相同的翻译单元中全部使用它们,则不会有任何区别。

它应该是这样的:

// header.h 
// guards... 
void func1(); 
void func2(); 

// source1.cpp 
#include "header.h" 
void func1() {} 

// source2.cpp 
#include "header.h" 
void func2() {} 
+0

我猜OP的真正问题在编译时开始 – user463035818

+0

因此,它们的链接器是.h文件,我不必#include或#using或任何东西?例如,我将在source2.cpp中编写代码并完成该函数,然后在source1(main source)上调用.h文件,这会继承我在source2中编写的函数? –

+1

@MohammadRahman没有“函数继承”这样的东西。如果你包含'header.h',你可以使用在它们声明的函数,只要它们有一个定义,在编译之后所有的东西都被链接器*解析。你也不应该链接头文件,只有源文件 – Rakete1111