编译包含多个文件的程序

Compiling a program with multiple files

本文关键字:程序 文件 包含多 编译      更新时间:2023-10-16

我刚开始学习C++,将Dev C++作为我的IDE。我正在使用的一个教程中有一个关于编译由多个文件组成的程序的页面。在这一点上,这很简单,我有一个包含函数的文件,另一个文件包含调用函数并输出结果所需的所有其他代码。问题是教程没有告诉我如何连接这些文件,以便我可以编译程序并使其工作。似乎有多种方法可以做到这一点,我都想要它们,但我现在主要寻找最简单的一种。

我还应该提到我是新手,所以请尽量保持您的解释简单易懂。

通常,您会将两个.cpp文件添加到同一目标下的项目中。它会自动将这两个文件添加到构建中并将它们链接在一起。


也就是说,Dev-C++非常非常古老且无人维护。它已经好几年没有更新了。我强烈建议您使用不同的 IDE。有很多可供选择,包括一个名为wxDev-C++的Dev-C++分支。我实际上会推荐Code::Blocks或Visual Studio Express,它们都更加现代,并且对调试和许多其他功能有更好的支持。

我不确定 Dev-C++,但概念保持不变。因此,这是您可以尝试让两个文件协同工作的方法

  1. 每个C++文件都是一个编译单元 - 这意味着编译器将分别将一个.cpp/.cxx文件转换为一个.obj/.o文件(在Windows和Linux(或任何Unix)上)
  2. obj文件,称为目标文件,包含该特定文件中存在的类和函数的机器代码(我在这里跳过一些内部细节)
  3. 如果要访问不同编译单元中的函数,则需要链接这两个目标文件
      链接
    • 是一个术语,用于链接两个目标文件
    • 有一个单独的进程(编译器除外)执行目标文件的链接
  4. 因此,在您的情况下,您需要使用 dev-c++ 编译器并创建单独的目标文件
  5. 然后使用链接器链接两个目标文件以创建最终可执行文件

如果要引用的.cpp文件中存在函数,请使用头文件。头文件包含函数/类声明。.cpp文件将具有实现。因此,在您的一个.cpp文件(例如)A.cpp中,您包含标头 B.hpp 并使用 B.hpp 文件中的函数。包含标头将告诉编译器函数声明存在于其他位置,并且链接器将负责将所有这些引用串在一起以创建最终可执行文件。

希望这有帮助,否则,请不要犹豫,提及您正在使用的文件,我可以建议如何将两个.cpp文件链接在一起。

必须使用 #include 预处理器指令包含其他文件在文件顶部,您有 main() 函数

例如:

#include "filename.h"
...
/* rest of code containing main function goes here */
...
#include "path/filename.c"
main
{
...
...
...
}