读书人

char FAR* FAR*是什么意思?解决方法

发布时间: 2012-02-20 21:18:23 作者: rapoo

char FAR* FAR*是什么意思?
struct hostent {
char FAR* h_name;
char FAR* FAR* h_aliases;
short h_addrtype;
short h_length;
char FAR* FAR* h_addr_list;
};

h_aliases和h_addr_list这样定义吗?晕,没见过这样定义的。

[解决办法]
你在看什么书?far已经是dos时代的东西了。
windows下面 FAR就是空格,直接忽略就可以了。

[解决办法]
如果你现在不是在进行dos编程,就不要那么好奇心强了。
这还不是一行字就能说清楚的。
[解决办法]
在DOS下(实模式)地址是分段的,每一段的长度为64K字节,刚好是16位(二进制的十六位)。
near指针的长度是16位的,所以可指向的地址范围是64K字节,通常说near指针的寻址范围是64K。
far指针的长度是32位,含有一个16位的基地址和16位的偏移量,将基地址乘以16后再与偏移量相加,(所以实际上far指针是20位的长度。)即可得到far指针的1M字节的偏移量。所以far指针的寻址范围是1M字节,超过了一个段64K的容量。例如一个far指针的段地址为0x7000,偏移量为0x1244,则该指针指向地址0x71224.如果一个far指针的段地址是0x7122,偏移量为0x0004,则该指针也指向地址0x71224。

读书人网 >C++

热点推荐