2014-10-28 193 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