Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否可以在没有填充字节的情况下获得结构的大小—成员的总和';尺寸_C++_Structure_Padding_Sizeof - Fatal编程技术网

C++ 是否可以在没有填充字节的情况下获得结构的大小—成员的总和';尺寸

C++ 是否可以在没有填充字节的情况下获得结构的大小—成员的总和';尺寸,c++,structure,padding,sizeof,C++,Structure,Padding,Sizeof,我需要检查结构是否已更改,为此,我通过模板技术实现了静态断言。但现在我只检查了sizeof,但是可以在不更改sizeof的情况下向结构中添加一些内容 如何计算成员的大小之和 struct A { int i; bool b; }; 我需要\uu sizeof(A)等于3,即sizeof(A::I)+sizeof(A::b) 我需要为我的项目中的大量结构完成此操作,并且必须填充结构,因为它应该提供最佳性能。您可以尝试使用特定于编译器的pack pragma。这种方法的唯一缺点是它没有那

我需要检查结构是否已更改,为此,我通过模板技术实现了静态断言。但现在我只检查了sizeof,但是可以在不更改sizeof的情况下向结构中添加一些内容

如何计算成员的大小之和

struct A 
{
  int i;
  bool b;
};
我需要
\uu sizeof(A)
等于
3
,即
sizeof(A::I)+sizeof(A::b)


我需要为我的项目中的大量结构完成此操作,并且必须填充结构,因为它应该提供最佳性能。

您可以尝试使用特定于编译器的pack pragma。这种方法的唯一缺点是它没有那么便携,你真的想要吗?我会考虑更改一个结构的对齐方式,一个不同于所有成员的单个siZoFs的变化。如果你知道结构的结构,你可以尝试使用OffStUfOf(),但是它只检测不附加到结构的成员变量。这不是通过源代码管理来检测的吗?您只想解决10%的问题。只需交换两个成员,就可以看到它无法工作。