C++ Struct - 定义最小大小

Nic*_*las 4 c++ memory-management visual-c++

是否有自动将结构填充到最小大小的C++(或MSVC)方法?例如,想象下面的伪代码:

#pragma pad(256) // bytes
struct SETUPDATA {
  int var1;
  double var2;
};

where sizeof(SETUPDATA) = 256 bytes
Run Code Online (Sandbox Code Playgroud)

这里的目标是,在开发期间,这个struct的成员可以在不改变运行时的占用空间大小的情况下进行更改.

Jes*_*mos 6

你可以使用联盟

struct SETUPDATA {
    union { struct your_data; char [256]; }
}
Run Code Online (Sandbox Code Playgroud)

或类似的东西.这确保它至少为256,但只要your_data不大.

您还可以在执行编译器检查之后添加一个简单的断言 assert(sizeof(struct SETUPDATA) == 256)

  • 这应该发挥 - 甚至似乎VS2008允许我使用匿名结构,这简化了事情. (3认同)