2013-09-24 9 views
0

Я читал учебники из Интернета о создании структуры, а затем инициализировал ее в main(). Из учебников я следовал, я создал свой собственный пример, который выглядит следующим образом:Объявление и инициализация C-структуры

#include <stdio.h> 

struct test { 
    int num; 
}; 

main() { 
    test structure; 
} 

Однако, это не работает:

test.c: In function 'main': 
test.c:8: error: 'test' undeclared (first use in this function) 
test.c:8: error: (Each undeclared identifier is reported only once 
test.c:8: error: for each function it appears in.) 
test.c:8: error: expected ';' before 'structure' 

Но когда я изменяю:

test structure; 

к:

struct test structure; 

в компилирует код. Почему это так? Из многочисленных примеров, которые я рассмотрел, кажется, что мне не нужна структура «структура» до «тестовой структуры».

Спасибо за вашу помощь/комментарии/ответы.

+2

Возможный дубликат [typedef требуется в описании структуры] (http://stackoverflow.com/questions/17124902/typedef-required-in-struct-declaration) –

+1

Являются ли эти учебники C или учебники на C++? – luiscubal

+0

Я бы сказал, что это дубликат. Мои извинения, я попытался найти ответ до публикации, но я не включил слово «typedef» в мой поиск, поэтому ссылка, которую вы опубликовали, не появилась. Спасибо. –

ответ

2

Вы читали примеры C++. В C тип вашей структуры: struct test не test.

+0

Спасибо! Примите ваш ответ как правильный ответ в ближайшее время (в настоящее время приходится ждать 11 минут). –

1

Вы можете обойти это, делая

typedef struct test_s 
{ 
    int num; 
} test; 
Смежные вопросы