关于UNION联合体的调用问题
以下的DLL函数怎么调用?
#ifndef _CMPPPDU_H
#define _CMPPPDU_H
#define S_char unsigned char
#define CMPP_SUBMIT 0x00000004
#define CMPP_SUBMIT_REP 0x80000004
#define MESS_HEAD_LEN sizeof(MESSAGE_Head)
#define CMPP_SUBM_LEN sizeof(Cmpp_Submit)
#define CMPP_SUBM_REP_LEN sizeof(Cmpp_Submit_REP)
typedef struct {
unsigned int Total_Length;
unsigned int Command_ID;
unsigned int Sequence_ID;
}MESSAGE_Head;
typedef struct{
S_char Pk_total;
S_char Pk_number;
S_char Registered_Delivery; /*该条信息是否要求应答*/
S_char Msg_level;
char Service_id[10];
S_char Fee_UserType;
char Fee_terminal_id[21]; /* new added by lxj **/
S_char TP_pid; /* new added On Jun 15 **/
S_char TP_udhi; /* new added **/
S_char Msg_Fmt;
char Msg_src[6];
char FeeType[2];
char FeeCode[6];
char Valid_Time[17];
char At_Time[17];
char Src_terminal_id[21];
S_char DestUsr_tl;
}Submit_PART;
typedef union{
char Dest_terminal_id[21];
char *dest;
}DEST_t;
typedef union{
char Msg_Content[140];
struct packet{
int length;
char *pkt;
}Content;
}Msg_C;
typedef struct{
MESSAGE_Head Message_Head;
char Msg_id[8];
Submit_PART S_part;
DEST_t Dest_phone;
S_char Msg_Length;
Msg_C Msg_Cont;
char Reserve[8];
}Cmpp_Submit;//这个是发送数据的消息体结构
extern "C" __declspec(dllexport) int CmppSend(HWND m_hWnd,char host[30],unsigned int iport,Cmpp_Submit submit);
我的调用过程如下:
/*这条*/strcpy(dd.Msg_Cont.Msg_Content,SMS_Data);
strcpy(dd.S_part.Service_id,Service_ID);// '服务类型码
/*这条*/dd.Dest_phone.dest=DestAddr;//'目标手机号码
PrintString("提取信息成功,开始发送本条信息!\n");
ret=SendFun(NULL,"211.137.96.147",7900,dd);
if(ret==0) {PrintString("本条信息发送成功\n");}
else {PrintString("本条信息发送不成功!\n");}
//SMS_Data和Service_ID都是CHAR类型的,并在上面正确赋了值。
我想知道的是,关于UNION类型的联合体,什么时候用哪个部分,什么时候用另一个部分?