Поскольку вопрос помечен C (а не C ++) и компилятор MSVC 2008, вы застряли в семантике C89. Это означает, что вы не можете объявлять переменные в блоке после первого оператора. Следовательно, вторая переменная структуры там не разрешена. (И C99, и C ++ позволяют объявлять переменные в любой точке блока. Попросите MS обновить компилятор C для поддержки C99.)
Ваша другая ошибка заключается в том, что main()
возвращает int
, следовательно:
#include <stdio.h>
struct point
{
int x;
int y;
};
int main (void)
{
struct point pt;
struct point pt2;
pt.x = 20;
pt.y = 333;
pt2.x = 4;
pt2.y = 55;
printf("asd");
return 0;
}
Несколько часов спустя : ключевое слово typedef не требуется в коде, поскольку после закрывающей скобки и перед точкой с запятой имя не указывается. Это не останавливает компиляцию; это вызовет предупреждение с установленным компилятором fussy.