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-13.3.0/gcc/Incomplete-Enums.html