我想添加在编译期间检查结构大小以确保它是预定义大小的代码。例如,当我移植此代码或在编译期间从结构中添加/删除项目时,我想确保此结构的大小为 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");
}
但是如果我在运行时这样做是浪费处理。我需要在编译期间执行此操作。
如何在编译期间执行此操作?
最佳答案
编译时可以查看大小:
static_assert (sizeof(mystruct) == 1024, "Size is not correct");
为此,您需要 C++11。 Boost 有一个针对 c++11 之前的编译器的解决方法:
BOOST_STATIC_ASSERT_MSG(sizeof(mystruct) == 1024, "Size is not correct");
关于c++ - 如何在编译时检查结构的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19401887/