В определении структуры ниже существует строка с определением макроса (#define
). Что делает эта линия? Я понимаю, что он делает псевдоним первой записи массива h_addr_list
, но он по-прежнему выглядит странно для меня. Является ли h_addr
членом структуры hostent
? Является ли это определение только в рамках структуры?
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 */
};