【发布时间】:2013-02-13 11:03:04
【问题描述】:
我有三个文件。
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 的开头包括它。 .我能想到的每种包含的组合,每个组合都会给出一组不同的错误。有时是多个定义,有时是未定义的函数...
那么这究竟是如何工作的呢?我应该在哪些文件中放入什么,包含哪些文件以及放在哪里?
【问题讨论】:
-
你为什么要在任何东西中包含
tree.c? -
预处理指令#include 基本上将您包含的文件的内容复制到您指定此包含的位置(请参阅msdn.microsoft.com/en-us/library/36k2cdd4%28v=vs.71%29.aspx)。因此,您的 #include
是您出现这种未定义类型错误的原因:您在原型之前复制了函数的实现。