[STM32F1] 如何指定其占用的字节数

[复制链接]
1263|19
 楼主| wenfen 发表于 2018-7-28 08:42 | 显示全部楼层 |阅读模式
想在keil下定义一个enum变量,如何指定其占用的字节数
zhuhuis 发表于 2018-7-28 08:43 | 显示全部楼层
能打个比方吗
 楼主| wenfen 发表于 2018-7-28 08:45 | 显示全部楼层
比如单字节enum,2字节enum和4字节enum
tian111 发表于 2018-7-28 08:46 | 显示全部楼层
还是不明白,为啥啊
 楼主| wenfen 发表于 2018-7-28 08:49 | 显示全部楼层
因为我想在协议中使用enum,所以必须指定,有遇到过类似问题的吗?麻烦指点下
huwr 发表于 2018-7-28 08:50 | 显示全部楼层
程序里试下,就知道了;
chenho 发表于 2018-7-28 08:51 | 显示全部楼层
加不加ENUM,看下编译占的字节数
gongche 发表于 2018-7-28 08:53 | 显示全部楼层
c++11标准可以的.以前的标准不行.c应该也不行
huwr 发表于 2018-7-28 08:55 | 显示全部楼层

这种方式行不行?
typedef enum tagE
{
   A = char(0);
   B;
   C;
}E_T;
huanghuac 发表于 2018-7-28 08:56 | 显示全部楼层
协议里用的话最好定义成有固定字节的类型,赋值时赋enum型的给它不就行了。
你非要弄也不是没办法,enum列表未尾加一个大值强制编译器来扩展字节数。如:
enum {
red,
green,
blue,
WSZZJD=0x7FFFFFFF //我是占字节的
};
本来只有前几项,编译器会优化成1个字节表示,后面加个32bit的数,就会用4字节表示。
 楼主| wenfen 发表于 2018-7-28 08:58 | 显示全部楼层


测试了下,在mdk里按照最小字节优化,多谢各位
gongche 发表于 2018-7-28 09:01 | 显示全部楼层

这种一般的你要在填充PACKET的时候转换一下的吧。。。。?
tian111 发表于 2018-7-28 09:02 | 显示全部楼层

你不需要依赖于某编译器把某个变量实现成多大的类型
huwr 发表于 2018-7-28 09:03 | 显示全部楼层
这个得看你定义的参数类型了吧
 楼主| wenfen 发表于 2018-7-28 09:04 | 显示全部楼层

结贴了,多谢大家讨论这么多哈,呵呵
paotangsan 发表于 2018-7-28 10:16 | 显示全部楼层
二次初始化呢
拉克丝 发表于 2018-7-31 16:06 | 显示全部楼层
编译占的字节数是多少
Bjorn 发表于 2018-7-31 21:15 | 显示全部楼层
协议里最好定义成有固定字节的类型
赋值时赋enum型的给它不就行了
ayb_ice 发表于 2018-8-1 08:40 | 显示全部楼层
灵活点,

enum{
        RED,
        GREEN,
        BLUE,
};

typedef struct{
        u32 uiColor;
        u16 usColor;
       
}Color_Typedef;

Color_Typedef MyColor;


MyColor.uiColor = GREEN;
MyColor.usColor = BLUE;
蝴蝶泉2018 发表于 2018-8-1 14:17 | 显示全部楼层
怎么我印象中是按照最大的来分配呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

737

主题

8940

帖子

8

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