如何包含其他 .cpp 文件

How do I include other .cpp files

我看过几个关于 C++ 头文件的教程,并且完全按照它们所显示的进行操作,但我真的不明白为什么我不能使用其他 .cpp 文件中的函数。

Main.cpp

#include <iostream>
#include "Header.h"

int main() {
    std::cout << sum(2, 2);

    return 0;
}

Header.cpp

#include "Header.h"

int sum(int a, int b) {
    return (a + b);
}

Header.h

#pragma once

int sum(int a, int b);

您的程序运行正常 here

要让您的程序在您的机器上运行,请按照以下步骤操作(假设您正在使用 g++Ubuntu:

步骤 1:使用以下命令创建 binary/executable:

g++ main.cpp Header.cpp -o myexecutable

步骤 2:Test/Run 您在最后一步使用以下命令创建的可执行文件:

./myexecutable

备用解决方案:快捷方式

现在,如果您想知道必须键入每个源文件的名称才能生成可执行文件,那么您可以松一口气,因为有一个快捷方式,如下所示:

假设你的当前目录中有很多源文件(.cpp文件),你想编译它们而不写所有的名字,那么你可以使用命令:

g++ ./*.cpp -o myexecutable

以上命令将创建一个名为 myexecutable 的 binary/executable .

通过包含文件,预处理器只是使包含的文件成为包含其他文件的文件的一部分。

在C++中,有one definition rule。如果您在其他文件中多次包含同一个定义,则违反了该规则。就是这样。

一般来说,预处理器和编译器都不知道“.h”或“.cpp”文件是什么,这只是一种约定。但是你不能在你的源文件中多次有相同的定义,如果你 link 多个对象或者在一个源文件中有多次定义是独立的。

如果您遵循惯例,将您的定义文件命名为“.cpp”,则将它们包含在其他文件中是没有意义的,因为这将导致多个定义。一次在从“.cpp”文件生成的目标文件中,一次在包含“*.cpp”文件的文件中。

您可以将“.cpp”文件包含在另一个目标文件中并使用它,如果您不 link 目标文件,该文件将从该文件中生成“[ =24=.cpp' 文件。但强烈建议不要做这种奇怪的事情:-)