[英]how to assign enum to enum variable
我在C中有以下代码:
typedef enum
{
MONDAY = 0,
TUESDAY,
WEDNESDAY
} Weekday;
typedef struct
{
int age;
int number;
Weekday weekday;
} Info;
typedef struct
{
int age;
Weekday weekday;
} Data;
Info info;
Data data;
info.weekday = data.weekday;
lint给出以下错误:
info.weekday = data.weekday; Type mismatch (assignment) (enum/enum)
如何将枚举分配给另一个枚举变量?
在这里用逗号替换分号:
MONDAY = 0;
如果仍有错误,则需要显示更多代码。
编辑:我的错,不知道“lint”。
似乎皮棉有点过于偏执。 这种任务不可能出错。 所以AnthonyLambert说,只是禁用此错误(或不使用lint?)。
我能想到的最后一招,但我不打赌,就是命名你的枚举:
typedef enum Weekday
{
//...
} Weekday;
您拥有的最后一个选项(我不建议使用)是在结构中使用int:
typedef struct
{
// ...
int weekday;
} Info;
然后,您可以为这些变量分配枚举器。
你的代码不正确,只是lint指出了潜在的错误。 如果使用C ++编译器编译,它将保留类型信息,则不会显示此错误。
问题是,只要你分配一个枚举值,就会在C中变成一个int类型。 所以,一旦你从工作日读到它的类型现在是int而不是工作日。
通过编码来解决在lint中报告的错误的方法是强制它再次从枚举中分配。
void SetWeekday( Info *info, Data* data )
{
switch (Data->Weekday)
{
case MONDAY: info->Weekday = MONDAY;
case TUESDAY: info->Weekday = TUESDAY;
etc...
}
}
或者lint允许您单独禁用每个错误,可能是最好的。
(此代码尚未编译,可能包含坚果和/或小昆虫等。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.