我有三个文件。
trees.h
// a bunch of typedefs and function prototypes
#include <trees.c>
trees.c
// a bunch of function bodies
main.c
#include <trees.h>
这是不对的,因为trees.c中的每个函数都给我关于trees.h中定义的类型的“未定义类型”错误。我已经尝试过所有可以想到的配置-从main包含trees.c并从trees.c包含trees.h,在trees.h的末尾包含trees.c,在trees.h的开始处包含它。我能想到的包括的每个组合,每个组合都会给出不同的错误集。有时是多个定义,有时是未定义的函数...
那么,这到底是如何工作的呢?我要在哪些文件中放入什么文件,我要在其中包括哪些文件?
最佳答案
像这样:
trees.h
// a bunch of typedefs and function declarations (prototypes)
trees.c
#include <trees.h>
// a bunch of function definitions (bodies)
main.c
#include <trees.h>
说明:
#include
基本上与将整个包含的文件复制到此文件(放置#include
的位置)相同。因此,在
trees.h
中包含main.c
可使该文件了解trees.c
中的功能。在
trees.h
中包含trees.c
可以使用trees.c
中较低的功能,这也是在trees.c
中指定定义等的地方。您可能还不知道有关创建多个对象并将其链接的信息,请参阅Joachim Pileborg的答案。
(非常丑陋的)替代方法是:
trees.h
// a bunch of typedefs and function declarations (prototypes)
trees.c
#include <trees.h>
// a bunch of function definitions (bodies)
main.c
#include <trees.c>
然后,您只需要编译
main
。但是对于只有几个.c
文件的任何项目,这都是不切实际的。关于c - 您打算如何在C项目中包含文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14852038/