位域如何设定默认值?

BruceLee2020 2020-07-31 04:25:20
union BYTE_CON_SN
{
BYTE m_bytSN[2];
struct
{
BYTE m_Set0 : 1;
unsigned int m_uiSN : 15;
} m_bitSN;
};
m_Set0 我想设置为0.

正常其他结构体,如:
struct stDemo
{
int m_iSet = 0; //通过这种语法来设定默认值
}

这个能实现吗? 还是说 C++ 对这块没有考虑到?
我不想每次定义一个 BYTE_CON_SN变量,下面就接一句 .m_bitSN.m_Set0 = 0;
因为随着项目的深入,可能还有其他的,甚至有几个都需要设定的情况。
...全文
291 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
BruceLee2020 2020-08-05
  • 打赏
  • 举报
回复
楼上的确实是一种解决方法。
  • 打赏
  • 举报
回复
c++不能在类/结构声明时初始化位域成员,我也不知道为什么这么设计,但是可以在构造函数的默认初始化列表中做:
struct BYTE_CON_SN
{
union
{
BYTE m_bytSN[2];
struct
{
BYTE m_Set0 : 1;
unsigned int m_uiSN : 15;
};
};
BYTE_CON_SN(): m_uiSN(127) {};
};

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧