[STM8] 请教个关于enum的问题

[复制链接]
1238|11
 楼主| x11223y 发表于 2017-4-18 10:35 | 显示全部楼层 |阅读模式
如题,具体问题如下:

定义了一种 TEST:
typedef enum _TEST0_
{
         PRA0,
         PRA1,
         PRA2,
         PRA3,
         PRA4,
         PRA5,
         PRA6,
         PRA7,
}TEST;

然后在在函数中调用了 TEST类型

void fun(TEST temp);

问题是:我用 fun(5);   这样是毫无问题了
可是 如果这样呢 fun(100);        100已经超出了TEST所定义的类型,这样做实际会出问题吗?

在 fun函数内部temp变量是继续使用100这个值,不管TEST类型?    还是会受TEST这个类型的上限取7?
feelhyq 发表于 2017-4-18 10:45 | 显示全部楼层
我的理解是,对于不确定的东西最好就不要去触碰,不同的编译器也许做法不一样。
mmuuss586 发表于 2017-4-18 12:41 | 显示全部楼层
你测试下就知道了;
没看到过用这么多的
皈依 发表于 2017-4-18 16:09 | 显示全部楼层
可能会出各种各样的奇怪问题
毕竟100这个所在的地址的信息你并没有进行操作
 楼主| x11223y 发表于 2017-4-18 18:24 | 显示全部楼层
皈依 发表于 2017-4-18 16:09
可能会出各种各样的奇怪问题
毕竟100这个所在的地址的信息你并没有进行操作 ...

有点不理解
 楼主| x11223y 发表于 2017-4-19 10:41 | 显示全部楼层
dalarang 发表于 2017-4-18 18:57
void fun(TEST temp);
既然将temp定义为TEST类型,那么fun(5)和fun(100)都不是正确的语句,编译器会提示 ...

fun(5)应该不会警告的吧,enum来说 PRA5的值就是5

现在搞不懂的是对于temp取100时怎么理解
q119227313 发表于 2017-4-19 10:55 | 显示全部楼层
x11223y 发表于 2017-4-19 10:41
fun(5)应该不会警告的吧,enum来说 PRA5的值就是5

现在搞不懂的是对于temp取100时怎么理解 ...

fun(5)大部分编译器都会警告,
fun(100)大部分编译器都会报错。
 楼主| x11223y 发表于 2017-4-19 11:02 | 显示全部楼层
q119227313 发表于 2017-4-19 10:55
fun(5)大部分编译器都会警告,
fun(100)大部分编译器都会报错。

谢谢,这样的话那我到时候只有取消TEST类型定义了

改成unsigned char
戈卫东 发表于 2017-4-19 12:20 | 显示全部楼层
编译器会帮你转换。。。
 楼主| x11223y 发表于 2017-4-19 14:22 | 显示全部楼层
戈卫东 发表于 2017-4-19 12:20
编译器会帮你转换。。。

请问怎么转换???
1021256354 发表于 2017-4-19 16:18 | 显示全部楼层
枚举不就是常数么?0-7的常数
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

48

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部