【问题标题】:Is it possible to have more than 1 .cpp file in a project (souce folder)? If so how would the .cpp file communicate?一个项目(源文件夹)中是否可以有超过 1 个 .cpp 文件?如果是这样,.cpp 文件将如何通信?
【发布时间】:2017-07-25 19:27:49
【问题描述】:

所以,我正在使用 c++。我知道如何将 .h 文件与 .cpp 链接(非常简单的东西。)我遇到的问题是,我不想将我的所有代码都写在一个 .cpp 文件中,这使得它太大并且组织变得忙碌.在其他语言(c# 和 python)中,我能够在不同的文件中编写一个类,然后从中派生子类,就像 c++ 中的头文件一样,但是 .h 文件仅用于声明函数,而 .cpp 是所有内容的地方正在编码。那么,如果没有一个大的 .cpp 文件,我可以在多个 .cpp 文件中对其进行编码吗?

【问题讨论】:

  • 几乎所有的 C++ 项目都包含多个 .cpp 和多个 .h 文件。
  • 注意语言。 “链接”在 C 和 C++ 的上下文中具有非常特殊的含义。我认为您还不了解链接(或者您不会问这个问题)。而是说您知道如何将 .h 文件包含到 .cpp 文件中。
  • 我有几千个源文件的项目。我确信一个文件夹中有几百个……我通常细分为子项目。
  • 我可以建议阅读a good book(或两个)..

标签: c++ parent-child code-organization


【解决方案1】:

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

这是可能的,因为当您将它们链接在一起时,定义来自哪个翻译单元并不重要,唯一重要的是它们是否存在。如果您将它们全部实现在同一个翻译单元中,则没有区别。

看起来像这样:

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

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

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

【讨论】:

  • 我猜 OP 的真正问题是在编译时开始的
  • 所以,他们的链接器是 .h 文件,我不需要 #include 或 #using 什么的?例如,我将在 source2.cpp 中编码并完成函数,然后在 source1(主源)上调用 .h 文件,这将继承我在 source2 中编写的函数?
  • @MohammadRahman 没有“函数继承”之类的东西。如果包含header.h,则可以使用其中声明的函数,前提是它们具有定义,所有这些都由链接器编译后解决。你也不应该链接头文件,只链接源文件
  • @MohammadRahman 您提出的问题没有错,但他们建议您需要比您正在使用的更好的 C++ 参考资料。不同的编译器套件有不同的方法来组织依赖项,其中 Visual Studio、Xcode 和 gcc/clangmakecmake 都有不同的协调方式。虽然基本原理相似,但您应该更深入地了解您的工具是如何工作的。
  • @Rakete1111 让我澄清一下,因此,通过您的设置,如果我在 source2 中定义 func2 的功能,那么如果我在 source1 中调用 func2,它将执行我在 source2 中的 func2 中定义的功能。这是正确的吗?
猜你喜欢
  • 2020-08-22
  • 2015-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-17
相关资源
最近更新 更多