Из этого question
Мне трудно понять этот код.
struct foo myfoo; // --> Is it forward declaration or object creation. ?
struct foo
{
int a;
};
int main()
{
return 0;
}
В коде, помеченном стрелкой --> Является ли это объявлением или созданием объекта.
Если это объявление вперед, то что называется struct foo;? Если это создание или создание объекта, то как он может создать объект перед определением структуры.
В gcc компилятор работает нормально, но другой компилятор дает ошибку.
gcc -Werror -Wall tst.c -o tst
Любое предложение или объяснение этого поведения gcc? Я не мог найти нигде, как задокументировано.