是否可以定义一个宏来检查某个值是否落在任何给定顺序枚举的值范围内?

问题描述 投票:0回答:1

给定一个按顺序分配的枚举(即第一个值为 0,最后一个值为枚举数 - 1),我们可以像这样检查一个值是否是有效的枚举值:

enum e {FOO, BAR, BAZ};
int x = whatever;
if (x < 0 || x > 2)
    /* x is not an explicitly defined member of the enum */

是否可以定义一个宏来执行此检查,适用于所有顺序枚举?

c enums
1个回答
0
投票

是否可以定义一个宏来执行此检查,适用于所有顺序枚举?

不。 C语言没有反射

通常您会:

enum e {FOO, BAR, BAZ, E_MAX};
if (0 <= x && x < E_MAX)
© www.soinside.com 2019 - 2024. All rights reserved.