Ошибка компиляции GCC: ожидаемый список спецификаторов-спецификаторов - PullRequest
0 голосов
/ 04 февраля 2011

При компиляции этого кода с помощью 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’

Почему?

Ответы [ 3 ]

9 голосов
/ 04 февраля 2011

Попробуйте: struct _Nodo *solicita.

2 голосов
/ 04 февраля 2011

Поскольку вы делаете typedef, в любом случае, сделайте

typedef struct Nodo Nodo;

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

, т.е. сделайте предварительное объявление ваших struct и typedef за один раз.Имена для них не должны быть разными.Тогда вы уже можете использовать имя typedef внутри объявления struct.

2 голосов
/ 04 февраля 2011

Как уже говорила Андреа, оно должно быть struct _Nodo * для solicita и asignado, т. Е .:

typedef struct _Nodo
{
    unsigned int id_thread;
    int id_mutex;
    struct _Nodo *solicita; // <<<
    struct _Nodo *asignado; // <<<
} Nodo;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...