使用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;
我明白了:
libdrm.c:13: error: expected specifier-qualifier-list before ‘_Nodo’
为什么?
答案 0 :(得分:9)
尝试:struct _Nodo *solicita
。
答案 1 :(得分:2)
正如Andrea已经说过,struct _Nodo *
和solicita
都需要asignado
,即:
typedef struct _Nodo
{
unsigned int id_thread;
int id_mutex;
struct _Nodo *solicita; // <<<
struct _Nodo *asignado; // <<<
} Nodo;
答案 2 :(得分:2)
因为你正在做typedef
,无论如何,做
typedef struct Nodo Nodo;
struct Nodo {
unsigned int id_thread;
int id_mutex;
Nodo *solicita;
Nodo *asignado;
};
即一次性声明struct
和typedef
。它们的名称不必相同。然后,您可能已在typedef
的声明中使用struct
名称。