【发布时间】:2019-04-05 01:58:17
【问题描述】:
我有两个带有源文件的头文件,比如说file1.h、file1.cc 和file2.h、file2.cc。他们使用彼此的功能,例如:
file1.h:
void test1();
file2.h:
void test2();
file1.cc:
#include "file1.h"
#include "file2.h"
void test1() {
do_something();
test2();
}
file2.cc:
#include "file1.h"
#include "file2.h"
void test2() {
do_something_else();
test1();
}
我得到了问题,依赖是相互的,我们不能编译一个文件而不编译另一个文件。如何解决这个问题?
【问题讨论】:
-
你有一个更大的问题,其中一个症状是,如果你能够编译代码,调用任何一个函数都会导致无休止的来回调用序列,直到你的系统用完一些资源——可能是堆栈内存。我想说你需要更多地思考为什么你想要两个以这种方式相互依赖的函数。
-
除了你没有声明你的代码应该编译的
do_something函数。 -
@Tim 在解析器等应用中相互递归是很常见的事情。
-
问题在于你如何链接文件,而不是编译它们。
-
你显示的头文件和源文件都很好;这正是你应该做的。这就是为什么人们(正确地)说问题在于您如何构建应用程序的原因。您需要编译并链接包含
main的源文件以及您在此处显示的两个源文件。一种可能性是clang++ main.cpp file1.cpp file2.cpp。
标签: c++ header include linkage