Следующий код компилируется без каких-либо предупреждений о gcc.
Обратите внимание, что нет прямого объявления для структуры. Является ли это допустимым кодом C и/или С++?
struct Foobar* f;
struct Foobar* fun() { return 0; }
int main() { f = 0; fun(); return 0; }