2016-02-04 3 views
-1

У меня есть две структуры, которые должны содержать указатели друг на друга. Но когда я пытаюсь определить их, как показано ниже, я получаю предупреждение.Как ссылаться на две структуры друг от друга

Мне нужно знать, нужно ли писать декларацию перед использованием одной структуры в другой.

typedef struct 
{ 
    char *nameBook; 
    char *auother; 
    ppl*p; 
}book; 

typedef struct 
{ 
    char *firstName; 
    char *lastname; 
    int id; 
    book **books; 
    int num_of_your_books; 
}ppl; 
+2

Пожалуйста, отредактируйте вопрос, если ваш комментарий противоречит. –

+1

Какое предупреждение вы получаете? – Litty

+0

1) военное дело, конечно же, не о «призвании». C не является языком ООП, поэтому 'struct' не может назвать другое. Пожалуйста, узнайте [ask] и предоставьте все и исправьте информацию. – Olaf

ответ

1

Вам нужно сделать опережающее объявление одной из структур ссылаться на другой, и вы должны дать сами названия структур, чтобы они могли ссылаться без ЬурейеЕ:

struct ppl; 

typedef struct book 
{ 
    char *nameBook; 
    char *auother; 
    struct ppl *p; 
}book; 

typedef struct ppl 
{ 
    char *firstName; 
    char *lastname; 
    int id; 
    struct book **books; 
    int num_of_your_books; 
}ppl; 
+0

, а если нет? могу ли я добавить объявление о том, что он будет работать? –

+0

Можете ли вы дать структуре и struct-typedef одно и то же имя? – Mijago

+0

@ n.levin Я отредактировал перед тем, как вы прокомментировали. – dbush

Смежные вопросы