繁体   English   中英

如何将 cpp 和 h 文件链接在一起?

[英]How to link cpp and h files together?

解决了

// Solution:
// foo.c includes foo.h; bar.c includes bar.h
g++ -Wall -Wextra -Werror -pedantic -o foobar foo.cpp bar.cpp

我有两个 cpp 文件和两个 h 文件。 我将第一个 cpp 链接到同名的 h 文件,该文件链接到链接到第二个 h 文件的第二个 cpp 文件。 这是我应该将文件链接在一起的方式吗?

我的程序不工作。 也有错误,但我需要确定这是否是错误的一部分。 这是定义/链接 cpp 和 h 文件的方式吗?

 // file: foo.cpp
 #include "foo.h"

 // file: foo.h
 #include "bar.cpp"

 #include <string>
 #include <sstream>
 #include <iostream>
 using std::cin;
 using std::cout;
 using std::cerr;
 using std::stringstream;
 using std::string;
 using std::endl;

 // file: bar.cpp
 #include "bar.h"

 // file: bar.h
 // ...

完全错误。 头文件将包含在 cpp 文件中。 Cpp 文件永远不会包含在任何东西中。 通常,头文件包含声明,而 cpp 文件包含定义。

如果您的程序包含两个 cpp 文件,则不要将其中一个包含在另一个中。 相反,您将它们一起编译成一个可执行文件。

我猜您对声明和定义的工作方式或包括的作用有一些误解。 建议你刷一下课本,或者看看github上的一些小C++程序。

不。你不应该#include cpp 文件。 此外,您错误地使用了术语“链接”。

  • cpp 文件应该#include 对应的头文件,如果有的话,在它们的第一行:bar.cpp 应该#include bar.h,foo.cpp 应该#include foo.h。
  • 每个标题都应该#included 作为相应cpp 文件中的第一个标题,即使您必须制作一个空的相应cpp 文件来#include 标题。
  • 头文件应该#include 只包含其他头文件
  • cpp 文件应该为它们使用的其他接口 #include 标头,或者应该包含前向声明,如果您可以编写有效的前向声明。

“链接”与#include无关。 这是链接器在编译/汇编完成后执行的任务。 链接是在目标文件和库上执行的,而不是头文件或 cpp 文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM