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

我正在写一个小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:

#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;