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