【问题标题】:Can I include a cpp file in the main when there is a hpp?当有 hpp 时,我可以在 main 中包含一个 cpp 文件吗?
【发布时间】:2020-09-15 13:37:44
【问题描述】:

例如: 我有一个名为 A 的类。还有:

A.hpp
A.cpp
main.cpp

我的项目

默认情况下,我只需要在 main 中包含 A.hpp 就可以编译它,可以使用 Xcode 等 IDE 或使用:

g++ main.cpp A.cpp -o xxxxx

但是提交系统只允许我使用:

g++ main.cpp -o xxxx

我试图在 main 中包含 A.cpp,但 IDE 说:构建序言时不能递归地包含 main 文件

有什么解决办法吗?我想分开保存我的 hpp 和 cpp。

【问题讨论】:

  • 永远不应该包含 cpp 文件。
  • 什么是“提交系统”?也许这就是需要解决的问题
  • 提交系统是学校的网络提交系统,我提交我的作品并获得自动评分。系统将使用 g++ main.cpp -o xxxx 编译我的代码
  • 显然提交系统(不管是什么)不能处理多个 .cpp 文件,因此您应该将整个代码放在一个 .cpp 文件中。这可以毫无问题地完成。否则请咨询您的老师/导师。
  • ^ 那将是我的目标。只需将 a.h 复制到 main.cpp 的顶部,然后将 a.cpp 粘贴到 main 的代码之后。

标签: c++ include main


【解决方案1】:

我可以包含一个 cpp 文件

理论上,可以包含任何文件。

但作为惯例,您永远不应该包含 cpp 文件。

但是提交系统只允许我使用:

g++ main.cpp -o xxxx

如果你不能编译 A.cpp 那么就不要写这样的文件了。将您在 A.cpp 中编写的定义写入 main.cpp。这与包含宏的效果相同,但在另一个 cpp 文件中不会有重复的定义。

【讨论】:

    【解决方案2】:

    您可以#include 任何您想要的文件。 #include 是自动复制粘贴。它查看您告诉它包含的文件,并读取文件中的任何内容,并假装您在原始文件中编写了该文件。它不关心文件中的内容,它只是这样做。您可以包含 .h 文件、.hpp 文件、.cpp 文件、.txt 文件、.py 文件、.jpg 文件或任何您想要的文件,只要它有效即可里面有 C++ 代码。

    请注意,包含.cpp 文件与单独编译它不同。人们期望.cpp 文件是单独编译的,不包括在内。为避免混淆其他程序员或您自己的未来版本,如果您想包含该文件,应该将文件重命名为其他名称。你不必这样做,但你应该这样做。如果它也不是一个普通的头文件(因为你不能多次包含它),那么你可以组成一些完全不同的扩展名,比如.inc

    【讨论】:

      猜你喜欢
      • 2021-09-21
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 2013-01-15
      相关资源
      最近更新 更多