我有三个文件。

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/

10-13 08:22