在C中有重复的枚举值是否合法?

gdb*_*gdb 18 c enums

enum protocol {
    ascii_prot = 3, /* arbitrary value. */
    binary_prot,
    negotiating_prot = 4 /* Discovering the protocol */
};
Run Code Online (Sandbox Code Playgroud)

双方binary_protnegotiating_prot等于4

Jam*_*lis 38

是.


gee*_*aur 6

是; C并不特别关于枚举值.为什么你可能这样做是另一个问题,除非有一些理由将发现数据包视为与数据包相同.(当其他人设计协议时,您可能希望尽可能贴近他们的文档.)