我目前移植在Linux上開發的Win32程序。在其他問題中,我有一個很奇怪的問題。 頭文件包含了這樣的事情:Visual Studio中的sizeof操作數非法
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
我嘗試添加了Networking::
MetaStruct
之前,但它不會改變任何東西。奇怪的是,當我用鼠標懸停它時,VS2010給了我正確的值sizeof
,但不會編譯它。爲什麼?
嘗試'的sizeof(decltype(STD :: declval().pdata))','從'。 –
2012-02-11 14:12:45
或'sizeof(void *)'。 :-) – 2012-02-11 14:13:43
@BoPersson:我想這個問題的重點是如何表達這一點而不用重複類型! :-)(乾的解決方案,如果你願意的話)。 – 2012-02-11 14:15:08