不同文件中枚举和数组的一致性检查

标签 c arrays enums

目前有两位开发人员正在编写两个单元。一个单元包含一个枚举定义(另外依赖于编译器开关),另一个使用数组定义来初始化一个数组。目前一切都是同步的。如果枚举的定义随着时间的推移而改变,但数组没有,我们如何避免陷入困境。对编译时或运行时检查有什么想法吗?

abc.h

typedef enum {
  A,
  #ifdef UseB
  B,
  #endif
  C,
  MAX
}My Enum

xyz.c

#include abc.h
int myArray[MAX] = {
  1,    // A
  #ifdef UseB
  2,    // B
  #endif
  3
};

如果在 C 之后添加新元素 D 或者顺序发生变化(例如 A 和 C 互换),是否有办法获得通知?

最佳答案

在宏中定义整个 enum 内容:

#ifdef UseB
#define B_Contents B,
#else
#define B_Contents 
#endif

#define MYENUM_CONTENT \
A, \
B_Contents \
C

typedef enum {
    MYENUM_CONTENT , 
    MAX
}

xyz.c:

#include abc.h
int myArray[MAX] = {
  MYENUM_CONTENT
};

关于不同文件中枚举和数组的一致性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27036377/

相关文章:

c - C Unix 中的段错误(核心转储)

c - C 中的微小链表错误

java - Spring Boot 将 @Value 绑定(bind)到 Enum 不区分大小写

c# - 测试单个值的 [Flags] 枚举值

c - C 中 *ptr 和 ptr* 有什么区别?

c++ - 函数指针 - 为什么,什么时候我可以不用?

javascript - 将数组项输出为 HTML

arrays - 读取文本文件时如何忽略标题

c - 在 C 中将整数数组作为函数参数传递

java - 不是 Enum 子项的枚举?