我正在尝试研究一些我没有写过的代码。
在下面的代码中定义了一个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;
以下两行有什么作用?
非常感谢。
答案 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