如何包含其他 .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' 文件。但强烈建议不要做这种奇怪的事情:-)
我看过几个关于 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' 文件。但强烈建议不要做这种奇怪的事情:-)