问题描述
我是C ++语言的新手,我正在写一个数据结构,该结构用于对保存在本地计算机上的数据进行序列化/反序列化。代码数据结构如下所示:
struct DerMeasurementData
{
float DerAnalogMeasValue = 0.0;
int DerStatusMeasValue = 0;
int DerMeasQuality = 0;
time_t DerReadingTime = 0;
time_t DerLastUpdateTime = 0;
};
// Ensure that comparison using memcmp will work correctly (currently there is 1 double value,2 integer value,2 time_t values in DerMeasurementData struct)
static_assert(sizeof(DerMeasurementData) == (sizeof(float) + 2 * sizeof(int) + 2 * sizeof(time_t)),"sizeof(DerMeasurementData) should be equal to summary size of it's fields");
但是,此代码无法编译,因为静态断言由于以下错误而失败:
Error (active) E1574 static assertion failed with "sizeof(DerMeasurementData)
should be equal to summary size of it's fields" dnom D:\ETD_Repo\IDMS_Dev\dmsSource\portable\serialization\MappedSerializationNew.h 2571
但是我不太明白为什么会这样。我的数据结构中有一个浮点数,两个整数和两个time_t,因此此结构的大小应与“(sizeof(float)+ 2 * sizeof(int)+ 2 * sizeof(time_t)”相同>
此外,当我将static_assert更改为以下代码时,它以某种方式起作用:
static_assert(sizeof(DerMeasurementData) == (sizeof(float) + 3 * sizeof(int) + 2 * sizeof(time_t))
有人可以让我知道为什么会这样吗?
最佳
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)