C++网络程序设计中一个系统定义好的结构体中成员的定义方式不懂?
我正在学习C++网络程序设计,下面这个结构体是我从某书上看到的,这个结构体是系定义好的,但是其中的成员定义让我搞不懂,哪位告诉我哈?
- C/C++ code
struct hostent { char FAR * h_name; /* official name of host */ char FAR * FAR * h_aliases; /* alias list */ short h_addrtype; /* host address type */ short h_length; /* length of address */ char FAR * FAR * h_addr_list; /* list of addresses */#define h_addr h_addr_list[0] /* address, for backward compat */};
我的疑问是:aliases和h_addr_list成员的类型指定让我犯糊涂,为什么这两个成员的类型要指定为char FAR * FAR *,两个FAR *放在一起表示什么意思啊?
如果以
char FAR * h_aliases;
char FAR * h_addr_list;
定义这两个成员可以吗,这两种的定义方式有什么区别呢?
麻烦各位说得详细点,初次接触c++网络编程,希望各位多关照下。
[解决办法]
FAR可以不看。
struct hostent {
char * h_name; /* official name of host */
char ** h_aliases; /* alias list */
short h_addrtype; /* host address type */
short h_length; /* length of address */
char ** h_addr_list; /* list of addresses */
#define h_addr h_addr_list[0] /* address, for backward compat */
};
[解决办法]
你可以看看FAR 的定义,是个空宏,只具提示意义,相当于:
- C/C++ code
struct hostent { char * h_name; /* official name of host */ char ** h_aliases; /* alias list */ short h_addrtype; /* host address type */ short h_length; /* length of address */ char ** h_addr_list; /* list of addresses */#define h_addr h_addr_list[0] /* address, for backward compat */};