如下所示:
struct __wait_queue { unsigned int flags; /* 这个标识符是干啥用? */ #define WQ_FLAG_EXCLUSIVE 0x01 /* 为什么要在结构体中间用 #define 呢? */ void *private; /* private 是干啥的? */ wait_queue_func_t func; /* 这个函数是干啥用的? */ struct list_head task_list; };
下面这个从网上摘抄的:
struct hostent { char *h_name; /* official name of host */ char **h_aliases; /* alias list */ int h_addrtype; /* host address type */ int h_length; /* length of address */ char **h_addr_list; /* list of addresses from name server */ #define h_addr h_addr_list[0] /* address, for backward compatiblity */ };
例如以上结构体:
定义一个变量: struct hostent he;
此deinfe的宏和结构体本身没有任何关系,同定义在结构体外面没任何区别。
但是这样做是使的以前的旧的代码he.h_addr不需要做修改,则可以实现he.h_addr_list[0]的改变。
我猜测放到里面的作用主要是便于代码的查阅,此宏的主要作用是用于此结构体而已。
文章评论