当你声明一个枚举时,枚举列表的常量值会自动增加。
typedef enum{
TEST0 = 0,
TEST_X, // automatically will be 1
TEST_Y, // ...will be 2
...
}test_t;
有没有办法让枚举常量的值减少而不是增加?例如,在类型定义之前使用attribute指令或其他解决方案?
所以我想要的行为:
typedef enum{
TEST0 = 0,
TEST_X, // want to be -1
TEST_Y, // want to be -2
...
}test_t;
我想到的唯一技巧/解决方法是:
typedef enum{
TEST_LOWEST = -2000,
TEST_X, //-1999
TEST_Y, //-1998
...
TEST0 = 0,
}test_t;
我没有找到一个属性,但也许有另一个解决方案。但上面描述的变通方案确实也有效。
1条答案
按热度按时间oxiaedzo1#
在纯C语言中没有办法做到这一点。我不知道有任何编译器扩展允许这样做。作为一种解决方案,您可以使用一个通过
__LINE__
宏访问的行号,并从一开始就减去它,以实现所需的行为。印刷品:
更安全的替代方法是使用GCC/CLANG中的
__COUNTER__
宏。每当__COUNTER__
宏被展开时,该宏返回一个递增的整数。