Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.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++_Visual Studio_Visual Studio 2010 - Fatal编程技术网

C++ 本地禁用填充

C++ 本地禁用填充,c++,visual-studio,visual-studio-2010,C++,Visual Studio,Visual Studio 2010,我为一些数据结构编写了一个解析器,经过数小时的调试,我发现问题在于VisualStudio没有按照我所说的解释结构。似乎使用了一些“填充” 我期望“sizeof(foo)=4*4+2=18”,但我得到了“sizeof(foo)=20”。是否有可能只为这个特殊结构关闭填充?我试过了 __declspec(align(1)) struct foo { ... 但它不起作用。感谢您的帮助。Visual Studio 2010必须完成您需要的工作。请使用#pragma pack指令: #pragma

我为一些数据结构编写了一个解析器,经过数小时的调试,我发现问题在于VisualStudio没有按照我所说的解释结构。似乎使用了一些“填充”

我期望“sizeof(foo)=4*4+2=18”,但我得到了“sizeof(foo)=20”。是否有可能只为这个特殊结构关闭填充?我试过了

__declspec(align(1)) struct foo { ...
但它不起作用。感谢您的帮助。

Visual Studio 2010必须完成您需要的工作。

请使用
#pragma pack
指令:

#pragma pack(push, 1)
struct foo { 
  // etc..
};
#pragma pack(pop)

但这不会影响所有结构吗?我只想让它在本地用于一个结构。你可以在事后还原它-你读过文档了吗?你可以使用#pragma pack push/pop来解决这个问题。只需在结构之前按一下,然后在结构之后按一下。我想。你是用
/zp1
编译的吗?@MartinBroadhurst可以全局禁用填充,hans的解决方案是有效的。
#pragma pack(push, 1)
struct foo { 
  // etc..
};
#pragma pack(pop)