Ответ 1
Да.
enum protocol {
ascii_prot = 3, /* arbitrary value. */
binary_prot,
negotiating_prot = 4 /* Discovering the protocol */
};
Оба binary_prot
и negotiating_prot
равны 4
?
Да.
Да; C не относится к значениям перечисления. Почему вы можете это сделать, это еще один вопрос, если нет причин рассматривать пакет обнаружения так же, как пакеты данных. (Что вполне может быть, когда кто-то другой разработал протокол, и вы хотите как можно ближе придерживаться их документации.)