如果使用无法改变内容的枚举,例如
typedef enum {
sun=0,
mon=1,
tue=2,
wed=3,
thu=4,
fri=5,
sat=6,
} days;
有没有办法安全地拥有一些看起来像的代码:
days day;
day = /*what goes here*/;
if (somecondition)
{
day = sun;
}
else if (othercondition)
{
day = mon;
}
if (day != /*what goes here*/)
{
use(day);
}
除了创建另一个哨兵,显示那天已经确定并且不依赖于知道日期枚举的内容?
答案 0 :(得分:3)
在类似的编码中,我尝试将第一个枚举(0)保留为" NULL"值:
typedef enum {
nullday = 0,
sun=1,
mon=2,
tue=3,
wed=4,
thu=5,
fri=6,
sat=7,
} days;
这允许“非白天”。天:
days day;
day = nullday;
if (somecondition)
{
day = sun;
}
else if (othercondition)
{
day = mon;
}
if (day != nullday)
{
use(day);
}
代码的另一个版本:
typedef enum {nullday=0, sun, mon,tue,wed,thu,fri,sat} days;
...
days day = nullday;
if (somecondition)
{
day = sun;
}
else if (othercondition)
{
day = mon;
}
if (day)
{
use(day);
}