GCC编译错误:应为说明符限定符列表

GCC编译错误:应为说明符限定符列表,c,gcc,C,Gcc,使用gcc编译此代码时 #include <stdio.h> #include <pthread.h> #include <stdlib.h> #include <unistd.h> typedef struct _Nodo { unsigned int id_thread; int id_mutex; _Nodo *solicita; _Nodo *asignado; }Nodo; 为什么?试试:stru

使用gcc编译此代码时

#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>



typedef struct _Nodo
{
    unsigned int id_thread;
    int id_mutex;
    _Nodo *solicita;
    _Nodo *asignado;

}Nodo;

为什么?

试试:
struct\u Nodo*requesta

正如Andrea已经说过的,对于
requesta
asignado
,都需要
struct\u Nodo*
,即:

typedef struct _Nodo
{
    unsigned int id_thread;
    int id_mutex;
    struct _Nodo *solicita; // <<<
    struct _Nodo *asignado; // <<<
} Nodo;
typedef结构\u Nodo
{
无符号int-id_线程;
int-id_互斥体;

struct _Nodo*requesta;//既然你在做一个
typedef
,无论如何,你要做什么

typedef struct Nodo Nodo;

struct Nodo {
    unsigned int id_thread;
    int id_mutex;
    Nodo *solicita;
    Nodo *asignado;
};

一次前进,你的代码<结构> /COD>和代码> TyPulf< /Cord>。它们的名称不必不同。那么,你可能已经在代码< >结构> <代码>的声明中使用了<代码> TyPulfF。注意,这不是C++中的问题,但是只有在C++中的C.才能移除(imHO)。可怕的typedef和对_Nodo的需要,只需编写struct Nodo{…};

typedef struct Nodo Nodo;

struct Nodo {
    unsigned int id_thread;
    int id_mutex;
    Nodo *solicita;
    Nodo *asignado;
};