我目前正在将一个在Linux上开发的程序移植到Win32上。除了其他问题外,我还有一个相当奇怪的问题。一个头文件包含了如下内容:
namespace Networking {
struct MetaStruct
{
int iDataType;
int iDataSize;
void* pData;
};
const int MetaStructSize = sizeof(MetaStruct) - sizeof(MetaStruct::pData);
};
在Linux上编译没有问题,但在使用VS2010编译Win32时出现以下错误:
Networking.hpp(50): error C2070: '': illegal sizeof operand
我尝试在MetaStruct
之前添加Networking::
,但仍无法解决。奇怪的是,当我用鼠标悬停在sizeof
上时,VS2010给出了正确的值,但无法编译。为什么会这样?
<type_traits>
中的sizeof(decltype(std::declval<MetaStruct>().pdata))
。 - Kerrek SBoffsetof(MetaStruct, pData)
或者甚至是void*(MetaStruct::*p) = &MetaStruct::pData;
吗? - CB Bailey