LINUX.ORG.RU

Указатель на структуру при объявлении этой структуры - как?


0

0

Есть структура, в которой один из членов - указатель на другую структуру этого же типа.

Грубо говоря вот например:

typedef struct {

int klass;
char name[20];
int *next_member_ptr;

} mystruct_teg;

Хотелось бы вместо последнего int прописать mystruct_teg *next_member_ptr, но компайлер ругается грубо.
В принципе хитрых сложений-вычитаний я с этим указателем производить не буду, поэтому может сойти и интовый, но хочется порядка и отсутствия варнингов во время компиляции (incompatible pointer type).
Менять тип в коде тоже не хочется.
Вроде как мне сказали, что должна проходить эта конструкция, но не проходит.
В чем может быть дело? Может опции какие компилятору надо дать? (gcc)

Если кто ответит - заранее спасибо!

anonymous

Если чистый C, то

typedef struct mystruct_tag{ 
  int klass; 
  char name[20]; 
  struct mystruct *next_member_ptr; 
} mystruct;

Havoc ★★★★
()

Not sure - you are still referencing to the same structure name before
defining it completely. The way it may work should be:

struct mystruct_tag;

typedef struct mystruct_tag {
int klass;
char name[20];
struct mystruct_tag *next_member_ptr;
} mystruct;


AFAIK.

BaT ★★★★★
()

BaT, я же написал программку и откомпилировал, прежде чем отвечать :)

Havoc ★★★★
()

Havoc, да, это я нагнал - для указателей не нужно неполное декларирование... Сорри :)

BaT ★★★★★
()

Заработало, 10х! 8=)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.