编译时将连续数字分配给#defines

Compile-time assignment of consecutive numbers to #defines

我有一系列#defines,我想分配连续的数字 在编译时这样我可以稍后参考它们并知道它们的顺序。 目前,我正在按顺序为每个 #define 分配一个数字, 但是,如果我更改顺序,我必须重新编号#defines。

#define THING_A     1 // I'm doing this now...
#define THING_F     2
#define THING_C     3
#define THING_B     4

未显示:这些#define在数组元素之间并引用 元素顺序。我经常需要重新排列元素顺序。 如果我重新排序它们,如下所示,我希望它们的数字相应地改变 无需我像这样编辑数字:

#define THING_C     1
#define THING_A     2
#define THING_B     3
#define THING_F     4

我可以用什么代替数字(同样适用于 每个#define)都会导致连续分配? 我不能像这样使用“__COUNTER_”...

#define THING_B     (__COUNTER__)

... 因为后面每次用到定义的值,都会变大。 这个“(某物)”是什么?

#define THING_A     (something)
#define THING_B     (something)
#define THING_C     (something)
#define THING_D     (something)

请参阅此回答 ,了解如何按照评论者的建议使用枚举。