打印
[应用相关]

指定占用字节数

[复制链接]
300|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wenfen|  楼主 | 2020-3-14 15:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想在keil下定义一个enum变量,如何指定其占用的字节数

使用特权

评论回复
沙发
zhuhuis| | 2020-3-14 15:19 | 只看该作者

能打个比方吗

使用特权

评论回复
板凳
wenfen|  楼主 | 2020-3-14 15:22 | 只看该作者
比如单字节enum,2字节enum和4字节enum

使用特权

评论回复
地板
tian111| | 2020-3-14 15:25 | 只看该作者
还是不明白,为啥啊

使用特权

评论回复
5
wenfen|  楼主 | 2020-3-14 15:31 | 只看该作者
因为我想在协议中使用enum,所以必须指定,有遇到过类似问题的吗?麻烦指点下

使用特权

评论回复
6
huwr| | 2020-3-14 15:35 | 只看该作者
程序里试下,就知道了;

使用特权

评论回复
7
chenho| | 2020-3-14 15:41 | 只看该作者

加不加ENUM,看下编译占的字节数

使用特权

评论回复
8
gongche| | 2020-3-14 15:56 | 只看该作者
c++11标准可以的.以前的标准不行.c应该也不行

使用特权

评论回复
9
huwr| | 2020-3-14 15:59 | 只看该作者

这种方式行不行?
typedef enum tagE
{
   A = char(0);
   B;
   C;
}E_T;

使用特权

评论回复
10
huanghuac| | 2020-3-14 16:03 | 只看该作者
协议里用的话最好定义成有固定字节的类型,赋值时赋enum型的给它不就行了。
你非要弄也不是没办法,enum列表未尾加一个大值强制编译器来扩展字节数。如:
enum {
red,
green,
blue,
WSZZJD=0x7FFFFFFF //我是占字节的
};
本来只有前几项,编译器会优化成1个字节表示,后面加个32bit的数,就会用4字节表示。

使用特权

评论回复
11
gongche| | 2020-3-14 16:07 | 只看该作者
这种一般的你要在填充PACKET的时候转换一下的吧。。。。?

使用特权

评论回复
12
tian111| | 2020-3-14 16:10 | 只看该作者


你不需要依赖于某编译器把某个变量实现成多大的类型

使用特权

评论回复
13
huwr| | 2020-3-14 16:14 | 只看该作者

这个得看你定义的参数类型了吧

使用特权

评论回复
14
hanwe| | 2020-3-14 16:21 | 只看该作者
二次初始化呢

使用特权

评论回复
15
zhuww| | 2020-3-14 16:25 | 只看该作者
编译占的字节数是多少

使用特权

评论回复
16
bqyj| | 2020-3-14 16:31 | 只看该作者
协议里最好定义成有固定字节的类型

使用特权

评论回复
17
chuxh| | 2020-3-14 16:34 | 只看该作者
赋值时赋enum型的给它不就行了

使用特权

评论回复
18
renyaq| | 2020-3-14 16:37 | 只看该作者
灵活点,

enum{
        RED,
        GREEN,
        BLUE,
};

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

Color_Typedef MyColor;


MyColor.uiColor = GREEN;
MyColor.usColor = BLUE;

使用特权

评论回复
19
yinxiangh| | 2020-3-14 16:40 | 只看该作者
怎么我印象中是按照最大的来分配呢?

使用特权

评论回复
20
wenfen|  楼主 | 2020-3-14 16:47 | 只看该作者

哦,那我就知道怎么回事了,多谢大家

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

737

主题

8940

帖子

8

粉丝