6.49 Неполные типы перечислений
Вы можете определить 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-12.2.0/gcc/Incomplete-Enums.html