C程序 - 检查两个枚举在编译时是否同步

5 c enums compilation sync

我遇到的问题是我在两个不同的文件中有两个枚举,它们应该具有相同的常量集(两个不同的进程由两个文件和其他文件一起生成).我希望枚举是同步的,即当有人为枚举x添加新值并忘记更新其他枚举时,我想抛出编译错误.那可能吗?

Rob*_*lls 11

为什么不将此声明放在单个头文件中,然后将其包含在需要的两个位置?


Rob*_*ert 5

让每个枚举以已知的枚举结束,例如LAST_ENUM_1和LAST_ENUM_2.在有权访问两个头文件的文件中使用#if进行比较.

#if LAST_ENUM_1 != LAST_ENUM_2
   #error Enums have different sizes
#endif
Run Code Online (Sandbox Code Playgroud)