将一个typedef从头传递给源--C

时间:2015-07-09 20:20:19

标签: c data-structures typedef ansi-c

我有以下 main.c 文件:

#include <stdio.h>
#include <stdlib.h>
#include <wctype.h>

#include "lista.h"

int main(int argc, char *argv[])
{
    struct nod *root = NULL;
    root = init(root);

    return 0;
}

lista.h

#ifndef LISTA_H_INCLUDED
#define LISTA_H_INCLUDED

#include "lista.c"

typedef struct nod
{
    int Value;
    struct nod *Next;
}nod;

nod* init(nod *);
void printList(nod *);

#endif // LISTA_H_INCLUDED

最后 lista.c

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

#include "lista.h"

nod* init(nod *root)
{
    root = NULL;
    return root;
}

void printList(nod *root)
{
    //We don't want to change original root node!
    nod *aux = root;

    printf("\n=== Printed list =====\n");
    while (aux != NULL)
    {
        printf(aux->Value);
        aux = aux->Next;
    }
    puts("\n");
}

即使在包含头文件后,我也会收到三个错误: 未知的类型名称&#39;点头

如何在lista.c上看到lista.h中的typedef?

我无法弄清楚这里发生了什么。

1 个答案:

答案 0 :(得分:4)

查看 lista.h 标题文件:

#ifndef LISTA_H_INCLUDED
#define LISTA_H_INCLUDED

#include "lista.c"

[..]

#endif // LISTA_H_INCLUDED

您包括 lista.c ,您根本不应该这样做。并且发生错误,因为那时nod尚未定义。