Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Объявления вложенных структур


Автор: mephistotel77 25.5.2010, 10:28
Доброго времени суток!
У меня вопрос такого характера: (код на С)
Почему компилятор ругается на:
Код

typedef struct _stack
{
 ipconfig *val;
 stack *next;
} stack;

error:expected specifier-qualifier-list before 'stack'.

Но позволяет сделать так: 
Код

typedef struct _stack
{
 ipconfig *val;
 struct _stack *next;
} stack;

Ведь next - и в том и в том случае указатель.
И правильно я понимаю, что по-другому, нежели как во втором варианте, объявить структуру нельзя?

Автор: xvr 25.5.2010, 10:50
Что next указатель ясно в обоих вариантах, а вот что такое stack в первом варианте неясно, т.к. typedef еще не завершен. Во втором варианте явно указанно, что это структура.
Цитата

И правильно я понимаю, что по-другому, нежели как во втором варианте, объявить структуру нельзя?
В С++ можно:
Код

struct stack
{
 ipconfig *val;
 stack *next;
};


Автор: mephistotel77 25.5.2010, 12:08
Цитата(cupper @ 25.5.2010,  10:56)
ахинея

Можно уточнить в каком посте? В моем?
Ну в С можно ещё так:
Код

struct stack
{
 ipconfig *val;
 struct stack *next;
};

но хотелось бы с использованием typedef, дабы каждый раз не писать ключевое слово struct.
Спасибо. Я понял, что это единственный вариант для C.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)