我需要在如下定义的结构中声明一个联合:
struct MyStruct
{
int m_DataType;
DWORD m_DataLen;
union theData
{
char m_Buff [_MAX_PATH];
struct MyData m_myData;
} m_Data;
};
最初,我尝试按如下方式访问联合数据(在添加 m_Data 声明之前):
MyStruct m_myStruct;
char* pBuff = m_myStruct.theData::m_Buff;
这会编译,但会向 pBuff 返回指向 MyStruct 结构开头的指针,当我认为我正在写入 m_Buff 缓冲区时,这会导致我覆盖 m_DataType 和 m_DataLength 成员。
我正在使用 Visual Studio 2008。任何人都可以解释这种意外行为吗?谢谢。