C的结构体定义, 求教高手

来源:百度知道 编辑:UC知道 时间:2024/07/08 01:24:29
以下是结构体变量定义:
#define EXTERN_NCD_CONTROL(A) extern struct nc_contr A ## _status;\
extern struct nc_drive *A[32]
请高手解析一下, 特别是"A ## _status"是三个变量吗? 还是1个呢? 还是##有特别意思?

假设后面出现
EXTERN_NCD_CONTROL(my)
那么它将被替换成
extern struct nc_contr my_status; extern struct nc_drive *my[32]
上面的展开式声明了一个结构体变量my_status和一个数组my.
注意:my_status是一个完整的标识符。
可见,##就像一个强力黏合剂,能让宏的参数(调用宏时传入的实参)粘上其他若干字符组成新的标识符。

这是一个宏
##是字符串连接,比如A=y那么 这个宏展开就是 y_status
只是一个连接符号,类似string的加法运算符