struct hostent {
  char FAR *       h_name;
  char FAR * FAR * h_aliases;
  short            h_addrtype;
  short            h_length;
  char FAR * FAR * h_addr_list;
};
请问各位大侠,在这个struct中的FAR*是什么作用的,为什么要用?什么时候应该用呢??

解决方案 »

  1.   

    far 是远指针,具体说在编译器生成指令时(转移指令)是 段指针:段内偏移 这样的格式。
    具体哪里用我也不是很清楚。
    我很少用的。(以前就看书有用过,自己没怎么用)
      

  2.   


    FAR,NEAR或far,near是DOS,16位Win时代的修饰符。
    那时内存地址是以实模式方式分段组织的。
    可寻址的范围是2^20=1024K=1M
    又因为是16位的寄存器所以一个段为2^16=64K当程序要访问段内地址时默认就是NEAR/near方式。
    寻址时仅仅包含段偏移就可以了。而要访问其他段的地址时,就需要加FAR/far修饰符。
    这时,寻址时不但要求段偏移还要有段基址信息。在32位Windows程序中,对FAR,NEAR或far,near已经不区别了。
    所以可以忽略它。WINDEF.H头文件中已经将FAR,NEAR或far,near定义为空字符。如果没有包含WINDEF.H头文件也可以设置编译选项。
    /D_near=  /D_far= /D__near=  /D__far=以上
      

  3.   

    谢谢shinka!!/:)
    还有其它高见吗?
      

  4.   

    这是个古老的东西,那还是恐龙横行的年代(xxxx略去n字)
    .....反正现在用不着了,呵呵
      

  5.   

    shinka(午夜妖灵) 老兄说的详细啊!!