https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110453
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- This is called a tentative declaration. A simplified definition of this can be found at https://en.cppreference.com/w/c/language/extern (with the references to the C standard on the bottom of the page).