2014年4月20日 星期日

又碰到C的Struct -- 1 Struct & Union

取自:史丹利部落格

為了解決從MCU透過藍牙傳遞過來的資料

遇到封包裡不同的OPCODE

採取的封包解析也相對應不同

struct structA {
    int a;
    char b;
};

struct structB {
    char a;
    short b;
};

struct structC {
    int a;
    char b;
    float c;
}

struct CommuPacket {
    int iPacketType;  //報文類型標誌
    union {      //每次傳送的是三種報文中的一種,使用union
        struct structA packetA;
        struct structB packetB;
        struct structC packetC;
    };
};

switch(recvCommuPacket.iPacketType) {
    case PACKET_A:
        … //A類報文處理
        break;
    case PACKET_B:
        …  //B類報文處理
        break;
    case PACKET_C:
        … //C類報文處理
        break;
}


沒有留言:

張貼留言