2014-10-28 231 views
-1

我想研究一個我沒有寫的代碼。結構指針

在下面的代碼中定義了一個struct ICB_CMD_,然後* ICB_PCMD是ICB_PCMD指向ICB_CMD_的指針。

typedef struct ICB_CMD_ 
{ 
    UINT8 u8MsgId; 
    UINT8 u8Addr; 
    UINT8 u8Length; 
    UINT8 u8MainCmd; 
    UINT8 u8SubCmd; 
    UINT8 au8Data[BUFFER_LENGTH-5]; //5: ENQ/ACK/NAK ID #BYTES CRCH CRCL BUFFER_LENGTH=200 
}*ICB_PCMD; 

也然後

EXTERN ICB_PCMD icb_pRxCmd; 
EXTERN ICB_PCMD icb_pTxCmd; 

什麼是下面兩行呢?

很多謝謝。

回答

0

在上面的代碼中,*ICB_PCMD是一種類型爲struct ICB_CMD_的指針類型,它尚未初始化。

extern使變量在其他源模塊中可見。

在此代碼聲明的兩個方式,可以使用:

struct ICB_CMD_ *var2;

ICB_PCMD var3;

兩個指針:

extern ICB_PCMD icb_pRxCmd;

exterb ICB_PCMD icb_pTxCmd;

是外部的,這意味着它們在其他文件中聲明,但現在(在extern中)可在當前源模塊中訪問。

+0

謝謝你,所以icb_pRxCMd和icb_pTxCmd是指向結構ICB_CMD_呢? – Ishraj 2014-10-28 14:36:33

+0

如果確切地說它們是'ICB_PCMD'類型的指針,它是指向'struct ICB_CMD_'的指針,請參閱我編輯的答案,並且* ICB_PCMD也是此類型的指針類型。 – 2014-10-28 15:03:22