在函数调用中向枚举添加uint的风险

时间:2017-06-20 13:52:36

标签: c function enums

我有一个返回浮点数的函数:

float function(enum value)

然后我有一个枚举

typedef enum
{
    a = 0,
    b,
    c
} myenum;

我想做以下事情:

function(a+1);

我想知道如果枚举更改,除了出现意外行为的风险之外是否存在任何风险。我的问题可能看起来很愚蠢,但我必须确保不存在我正在做的事情的风险。

请不要问这样做的原因。因为我不知道。我只需要知道它是否安全。

2 个答案:

答案 0 :(得分:4)

这是安全的。此外,该标准保证在您描述的方案中a+1ba+2c

  

C99标准,第6.7.2.2节,第3部分:如果第一个枚举数没有=,则其枚举常量的值为0。每个后续的没有=的枚举器将其枚举常量定义为通过将1添加到前一个枚举常量的值而获得的常量表达式的值。

答案 1 :(得分:1)

这很安全。正如你似乎认识到自己一样,它确实与枚举的工作方式有关,这就像任意标签一样。但是,有时您需要订购这样的< b< C。如果在某种意义上a = 0且b = 1且c = 2,那么你不需要枚举,但是,你想要一个int类型的变量。