enum protocol {
ascii_prot = 3, /* arbitrary value. */
binary_prot,
negotiating_prot = 4 /* Discovering the protocol */
};
¿Ambos binary_prot
y negotiating_prot
son iguales a 4
?¿Es legal tener valores enum duplicados en C?
enum protocol {
ascii_prot = 3, /* arbitrary value. */
binary_prot,
negotiating_prot = 4 /* Discovering the protocol */
};
¿Ambos binary_prot
y negotiating_prot
son iguales a 4
?¿Es legal tener valores enum duplicados en C?
Sí; C no es particular acerca de los valores enum. La razón por la que podría hacer eso es otra cuestión, a menos que haya alguna razón para tratar el paquete de descubrimiento de la misma manera que los paquetes de datos. (Que bien podría ser cuando alguien más diseñó el protocolo y desea adherirse lo más posible a su documentación.)
Está ** explícitamente permitido ** por el [borrador N1265 C99] (http: // www) .open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf) en 6.7.2.2/3 "Especificadores de enumeración": "El uso de enumeradores con' = 'puede producir constantes de enumeración con valores que duplican otras valores en la misma enumeración ". Había puesto esto en una respuesta pero http://stackoverflow.com/users/100297 lo eliminó debido a una respuesta duplicada: http://stackoverflow.com/a/30916409/895245 No creo que esas preguntas sean duplicadas. –