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