【发布时间】:2021-07-30 05:48:27
【问题描述】:
我是 C 新手,似乎对头文件的工作方式有误解。 为简单起见,我有三个文件:tree.h、lib.c 和 main.c
在tree.h中,我有
struct Node
{
void* item;
Node** nodes;
};
struct Tree
{
Node* tree_root;
int depth, item_size;
};
void initializeTree(Tree*, int);
据我了解,此 initializeTree 方法是一个函数“签名”,并且每当我在 lib.c 或包含头文件的任何其他 .c 文件中调用该函数时,编译器都会对该函数有所了解树.h。 但是,在 lib.c 中出现错误“标识符树未定义”。
#include <tree.h>
void initializeTree(Tree* tree, int item_size)
是什么导致了这个错误?编译器是否无法从包含的头文件中“看到” Tree 结构?
【问题讨论】:
-
Tree* tree->struct Tree* tree。struct关键字是类型名称的一部分。或者,您可以使用typedef创建一个没有struct的别名。 -
和...
Node** nodes;-->struct Node** nodes;
标签: c header-files