«Ошибка разбора» в объявлении структуры - PullRequest
1 голос
/ 30 марта 2010

Я хочу использовать базовую структуру в C, например:

struct p {
    int a;
    int b;
    p * next;
}

Однако он не компилируется с error: parse error before "p" в строке с p * next;.

Вы хоть представляете, в чем причина этой проблемы?

1 Ответ

9 голосов
/ 30 марта 2010

C-структуры живут в другом пространстве имен и должны быть явно определены, таким образом:

struct p {
    int a;
    int b;
    struct p * next;
};

И не забывайте точку с запятой в конце! : -)

Вы можете притворяться, что вы в C ++, таким образом: typedef struct p { /*...*/ } p;. Но я думаю, что next все равно будет объявлено, как указано выше.

...