C 取消引用指向不完整类型列表的指针
我正在写一个小C程序,它加载一个带有文件名的链表(仅限)。我将遍历这个列表并解析每个文件名的内容 编译时,我收到以下错误:C 取消引用指向不完整类型列表的指针,c,list,pointers,C,List,Pointers,我正在写一个小C程序,它加载一个带有文件名的链表(仅限)。我将遍历这个列表并解析每个文件名的内容 编译时,我收到以下错误: main.c: In function 'main': main.c:25: error: dereferencing pointer to incomplete type main.c:26: error: dereferencing pointer to incomplete type make: *** [main.o] Error 1 主要条款c: #includ
main.c: In function 'main':
main.c:25: error: dereferencing pointer to incomplete type
main.c:26: error: dereferencing pointer to incomplete type
make: *** [main.o] Error 1
主要条款c:
#include <stdio.h>
#include <stdlib.h>
#include "list.h"
int main(int argc, char *argv[])
{
FNODEPTR node = NULL;
node = create_filename_list();
add_filename_node(&node, "file1.txt");
add_filename_node(&node, "file2.txt");
//Start Logger
//Watchdog
//Warehouse
//print_filename_list((struct sFilename *)node);
while(node!=NULL)
{
printf("%s\n",node->chaFilename); //Line 25
node=node->next; //Line 26
}
destroy_filename_list(node);
exit(0); //0 SUCCESS - 1 FAIL
}
此列表将作为对其他函数(模块)的引用传递,这些函数(模块)将解析内容并将其加载到数据库中。虽然我不能使用node->chaFilename打开需要加载到数据库中的文件
我遇到了一个新问题,当我调用解析器函数passing*node作为引用时,编译器的抱怨与上面相同。例如:
语法分析器c:
//Built-in libs
#include <stdio.h>
#include <stdlib.h>
//Homemade libs
#include "parser.h"
#include "list.h"
int start_parse(FNODEPTR *node)
{
if(node!=NULL)
{
printf("Node is not null\n");
while(node!=NULL)
{
printf("\tNode address %x\n", (unsigned int)node);
node=node->next;
};
}
return 1;
}
GCC输出:
gcc -Wall -c -o parser.o parser.c
parser.c: In function 'start_parse':
parser.c:16: warning: cast from pointer to integer of different size
parser.c:17: error: request for member 'next' in something not a structure or union
make: *** [parser.o] Error 1
有什么想法吗
提前谢谢,对于任何英语错误,我深表歉意
struct sFilename
{
char chaFilename[25];
struct sFilename *next;
};
这应该在list.h文件中定义,在语句之前:
typedef struct sFilename FNODE;
typedef FNODE *FNODEPTR;
编辑::
int start\u parse(FNODEPTR*节点)
应该是int start\u parse(FNODEPTR节点)
我认为extern
不会这样做,因为main.c引用的成员节点->chaFilename
,它只在list.c文件中定义。@JoachimIsaksson-hmm,我必须编译程序并查看。。我想你是对的@你说得对。修改答案!非常感谢!:-)酷@RibeiroGustavoTI:-)享受用C编程的乐趣。它是我最喜欢的语言,除了C之外,它还添加了更多关于新场景的信息。顺便说一句,我也喜欢C,但我有点生疏了。
gcc -Wall -c -o parser.o parser.c
parser.c: In function 'start_parse':
parser.c:16: warning: cast from pointer to integer of different size
parser.c:17: error: request for member 'next' in something not a structure or union
make: *** [parser.o] Error 1
struct sFilename
{
char chaFilename[25];
struct sFilename *next;
};
typedef struct sFilename FNODE;
typedef FNODE *FNODEPTR;