【发布时间】:2012-12-17 23:36:42
【问题描述】:
我无法让枚举在 Windows 上正常工作。在 linux 上编译时它返回预期值,但在 windows 上它返回一些随机数。
typedef enum wezly {
elektrownie1,
konwencjonalne1,
niekonwencjonalne1,
weglowa1,
jadrowa1,
sloneczna1,
wiatrowa1,
geotermiczna1,
gazowa1,
wodna1,
maremotoryczna1,
maretermiczna1
};
wezly wybor_wezla(string opcja)
{
string bb;
bb = opcja;
if ((bb.compare("[elektrownie]")==0)||(bb.compare("[ELEKTROWNIE]")==0))
return elektrownie1;
else if ((bb.compare("[konwencjonalne]")==0)||(bb.compare("[KONWENCJONALNE]")==0))
return konwencjonalne1;
else if ((bb.compare("[gazowa]")==0)||(bb.compare("[GAZOWA]")==0))
return gazowa1;
else if ((bb.compare("[wodna]")==0)||(bb.compare("[WODNA]")==0))
return wodna1;
// (and so on...)
}
int main()
{
cout << wybor_wezla("[gazowa]");
}
在 linux 上我得到 7,在 windows 上它是一些随机数....
为什么会这样?
【问题讨论】:
-
返回哪个号码?
-
你在
(an so on...)中做了一些奇怪的事情。您能否发布一个自包含、完整但最小的示例来实际演示该问题?如,如果您的enum值较少,问题是否仍然存在?如果是这样,请删除它们并进行测试,直到它以最少数量的enum值(以及最小大小的链式if块)sscce.org -
它应该是 7,但在 Windows 上它会做一些奇怪的事情
-
@user1902400 什么是“奇怪的东西”?
-
为什么是 typedef?它看起来不像你的类型定义枚举到任何东西?