VC中数据类型定义中far的含义
初学网络编程,看到connect函数定义
int connect(
SOCKET s,
const struct sockaddr FAR * name,
int namelen
);
对于其中的“FAR”不明白是什么意思,知道的帮我解解疑阿,小女子先谢谢了!
问题点数:20、回复次数:6Top
1 楼syy64(太平洋)回复于 2006-03-06 14:09:52 得分 5
那是16位时代的产物,表示远指针,现在的32位时代已经不用那么用了。Top
2 楼whyandhow(sunny)回复于 2006-03-06 15:45:15 得分 0
原来如此啊,群上有人说这是远程访问时用的,可能还和内存访问模式有关
那也就是说我们现在完全可以把所有定义中的far去掉了?Top
3 楼wawaku(一堆裤衩!)回复于 2006-03-06 16:13:05 得分 11
Win32 不区分 near 和 far 地址。因为 NEAR 和 FAR 类型在 WINDEF.H 中定义,所以它们由包含文件自动处理,被包含文件重新定义为空的 Win32 字符串。因此,忽略 NEAR 和 FAR。如果没有包含 WINDEF.H,方便的解决方案是使用 /D 命令行选项将关键字替换为空字符串。例如:
/D_near= /D_far= /D__near= /D__far=
32 位 Windows 中增加的地址空间在几个方面影响 16 位代码:
指针全都是 32 位宽,不再用 near 或 far,并且代码无法根据分段内存进行假定。
窗口句柄、其他对象(如钢笔、画笔和菜单)句柄和图形坐标已增加到 32 位。因此,不能像在 16 位 Windows 中那样使用可与 HWND 交换的 WORD 这样的类型。
因为不同的大小可以改变某些消息参数中的信息封装方式,所以必须重写消息处理程序。
图形坐标大小的增加影响了若干函数调用。
这些变化影响的主要 16 位代码区域是:
窗口过程声明
Near 和 Far 类型声明
数据类型
消息
API 函数调用
WinMain 函数
(摘自MSDN)Top
4 楼syy64(太平洋)回复于 2006-03-06 17:28:58 得分 2
是啊Top
5 楼Delphityro(下岗工人)回复于 2006-03-06 20:51:38 得分 2
在windows下,far和near都是32位的了。不用管它了。Top
6 楼whyandhow(sunny)回复于 2006-03-06 23:41:27 得分 0
哈,明白了,谢谢大家了,尤其wawaku^_^Top




