C++ 如何在联合内部传递成员值(具有嵌套结构)

C++ 如何在联合内部传递成员值(具有嵌套结构),c++,C++,在我的一个项目中,我有一个工会 typedef struct { teD eId; union { struct { UCHAR ucVolume; }stAng; enum { TEMP_MP=0, FD_MP, FD_HP,

在我的一个项目中,我有一个工会

typedef struct  
{  
    teD eId;  
    union  
    {  
        struct  
        {  
            UCHAR ucVolume;  
        }stAng;  
        enum  
        {  
            TEMP_MP=0,  
            FD_MP,  
            FD_HP,  
            COHP,  
            PT_PARAM,  
            T_PARAM,  
            ME_TEST,  
            CK,  
            ER,  
            MIT,  
            FXSCR_IN,  
            F_OUT,  
            FEY,  
            FKEY,  
            FNT_HOLD,  
            FBSERT,  
            FOVE,  
            FBROR  
        }eud;  
        struct  
        {  
            UWORD ud;  
            enum  
            {  
                AR = 0,  
                ACE  
            }eAts;  
            enum  
            {  
                IM = -1,  
                ITY ,  
                PTY,  
                LOTY,  
            }eAe;  
            enum  
            {  
                APE = -1,  
                AHP,  
                AUP,  
                AP,  
                AMP,  
                AULMT,  
                ASERT,  
                AUE,  
                AOR  
            }eAude;  
            CHAR acPme[20];  
        }stAfo;  
    }una;  
}tssg;  

typedef struct  
{  
    teD eId;  
    union  
    {  
        char Data[1032];  
    } unMsgBuf;  
} tstMsg;  

const BOOL cMpssk :: mbPsg (const tstMsg  svd)  
{  
    tssg &tstAuMsg = (tssg&) svd;  
    case 1:  
    {  
        if(tstAuMsg.una.stAfo.eAts == ACE) 
在这里,我设置
tstAuMsg.una.stAfo.eAts=1但如果条件未通过,仍然会出现此情况

我不清楚什么是成功的if条件应该传递的确切值

这是小端处理器,被认为是32位整数

请求你的建议,并提供一些细节,说明失败的原因,从而对其有所帮助

谢谢,,
Karthick

您是如何将值分配给tstAuMsg.una.stAfo.eAts的?我建议打印分配的值,然后进行检查。printf(“%d\n”,(int)tstAuMsg.una.stAfo.eAts);实际上,我正在运行用于单元测试的向量转换。式中,由于结构从一种类型转换为另一种类型,tssg&tstAuMsg=(tssg&)svd;通过用户代码,我将值指定为;const tstMsg svd={};tssg和tstAuMsg=(tssg和)svd;tstAuMsg.una.stAfo.eAts=ACE;这就是我分配值的方式。一旦我执行了这个程序,它就永远不会满足if条件if(tstaumgsg.una.stAfo.eAts==ACE)。看来我在为工会成员分配值时出错了。您是如何将值分配给tstAuMsg.una.stAfo.eAts的?我建议打印分配的值,然后进行检查。printf(“%d\n”,(int)tstAuMsg.una.stAfo.eAts);实际上,我正在运行用于单元测试的向量转换。式中,由于结构从一种类型转换为另一种类型,tssg&tstAuMsg=(tssg&)svd;通过用户代码,我将值指定为;const tstMsg svd={};tssg和tstAuMsg=(tssg和)svd;tstAuMsg.una.stAfo.eAts=ACE;这就是我分配值的方式。一旦我执行了这个程序,它就永远不会满足if条件if(tstaumgsg.una.stAfo.eAts==ACE)。看来我把值分配给工会成员是做错了。