我尝试在C中实现链表,并从这个简单的代码开始:
#include <stdio.h>
struct int_node;
struct int_list;
struct int_list create_list();
int main() {
struct int_list list = create_list();
return 0;
}
struct int_node {
int value;
struct int_node * next;
};
struct int_list {
struct int_node * first;
};
struct int_list create_list() {
/* Creates an empty list, first node=null */
struct int_list list;
list.first = NULL;
return list;
};
建筑时我遇到两个错误:
我寻找答案,我能找到的就是在使用它之前我需要声明结构和函数,我做了。
我尝试的另一件事是将main()函数移动到最后,这解决了错误,但这是一个愚蠢的解决方法,我想找出真正的解决方案。
任何帮助?
答案 0 :(得分:6)
结构的定义也应放在main()
之前。也就是说,你的愚蠢修复实际上是正确的修复。
答案 1 :(得分:1)
实际上,在使用它们之前,你需要定义结构,否则编译器在主方法中看到它时如何知道struct int_node
是什么。正如Bill Lynch所说,你的简单修复实际上只是正确的方法。
如果您有兴趣了解更多内容,您应该查看程序从源代码到C中的可执行文件的确切方式。 Here是一个有趣且不长的网页。