6.50 Неполные типы перечислений
Вы можете определить enum тег без указания его возможных значений. Это приводит к неполному типу, подобно тому, что вы получаете, если вы пишете struct foo без описания элементов. Более позднее объявление, которое определяет возможные значения, завершает тип.
Вы не можете выделять переменные или хранилище, используя тип во время его неполноты. Однако вы можете работать с указателями на этот тип.
Это расширение может быть не очень полезным, но оно делает обработку enum более согласованной со способом обработки struct и union.
Это расширение не поддерживается GNU C++.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-14.2.0/gcc/Incomplete-Enums.html