我希望在编译期间添加代码,检查结构体的大小以确保它是预定义的大小。例如,当我将此代码移植或在编译时添加/删除结构体中的项目时,我希望确保结构体的大小为1024个字节:
#pack(1)
struct mystruct
{
int item1;
int item2[100];
char item3[4];
char item5;
char padding[615];
}
我知道如何在运行时使用类似这样的代码来完成此操作:
if(sizeof(mystruct) != 1024)
{
throw exception("Size is not correct");
}
但如果我在运行时执行这个操作就会浪费处理资源,因此我需要在编译时执行这个操作。
我应该如何在编译时执行这个操作呢?
sizeof
的部分仍然在编译时完成。对于编译时断言,static_assert
可以很好地工作。 - chris