如何解决static_assert失败:结构的大小与所有属性的大小之和不同
我是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 举报,一经查实,本站将立刻删除。