指向结构的指针

时间:2014-10-28 14:10:10

标签: pointers structure extern

我正在尝试研究一些我没有写过的代码。

在下面的代码中定义了一个struct ICB_CMD_,然后* ICB_PCMD,是指向ICB_CMD_的ICB_PCMD指针。

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;

以下两行有什么作用?

非常感谢。

2 个答案:

答案 0 :(得分: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)可以在当前的源模块中访问。

答案 1 :(得分:0)

“extern”关键字允许您访问在另一个源文件中声明的变量。

这是关于这个主题的一些有用的阅读材料:

StackOverflow - How do I use extern to share variables between source files in C?
StackOverflow - How to correctly use the extern keyword in C
Understanding “extern” keyword in C