请问下面的这两句的void   __RPC_FAR* 是什么意思?
typedef   void   __RPC_FAR*   HGDIOBJ ;
typedef   void   __RPC_FAR*   HBRUSH ;
 我只明白typedef int Height;这种意思,上面的出现了void   __RPC_FAR*两个我就搞
不懂了,请大家好好跟我解释一下,谢谢了!

解决方案 »

  1.   

    __RPC_FAR是一个宏来着
    参见http://topic.csdn.net/t/20041031/10/3507368.html
      

  2.   

    __RPC_FAR是个宏,
    在rpc.h中的定义是
    #define __RPC_FAR 
    是个空定义,
    所以
    typedef  void  __RPC_FAR*  HGDIOBJ ; 
    typedef  void  __RPC_FAR*  HBRUSH ; 
    变成了
    typedef  void  *  HGDIOBJ ; 
    typedef  void  *  HBRUSH ; 就跟正常的
    typedef  int * pint ; 
    一个意思了
      

  3.   

    typedef  void*  HGDIOBJ ; 这下懂了吧。
      

  4.   

    __RPC_FAR 是为了让你明白这是在你进程之这使用的指针,因为在 586 内存已经是平坦模式,所以没有什么特别义意
      

  5.   

    typedef  void*  HGDIOBJ ; 
    typedef  void*  HBRUSH ; 
      

  6.   

    在早期16位时有“段”的概念,同一个段内的指针成为NEAR型,其它段中的指针成为FAR型。在32位程序中所有段都是相同的,所有指针都是段内的,不再需要指定NEAR和FAR,但为了方便将16位程序移植到32位系统,很多16位程序中使用的宏和函数被保留下来。
      

  7.   

    谢谢大家了~它的意思typedef  void*  HGDIOBJ ; 那我就明白了~
      但是我又不明白这种typedef void* pint的形式要怎么用,如果是typedef int* pint我还知道,我就把本来的int *p就变成pint p;
    但是它这个是void是空指针,那么我就不明白这个有什么用了,请大家帮我解释一下~
      
      

  8.   

      但是我又不明白这种typedef void* pint的形式要怎么用,如果是typedef int* pint我还知道,我就把本来的int *p就变成pint p; 
    但是它这个是void是空指针,那么我就不明白这个有什么用了,请您帮我解释一下~ 
      

  9.   

    typedef行的最后一个名字就是定义的类型名,以后可以用这个类型名来定义变量等,例如:
    HBRUSH brush;
    系统的一些函数会使用这些类型作为参数或者返回值等。
      

  10.   

    看看extern void *memcpy(void *dest, void *src, unsigned int count) 函数为什么是这么定义的,就明白void*了
      

  11.   

    hoho,
    void*是空指针,反过来他就是万能指针,可以强制转化成其他各种类型的指针,增加程序灵活性
      

  12.   

    一个指向任何对象类型的指针都可以赋值给void*,就是说不知道对象具体的类型时,可以用void*来代替,但是如果要对void*操作时,必须显式的将它转换到某个特定类型的指针.
      

  13.   

    MSDN上滴:
    If a pointer's type is void *, the pointer can point to any variable that is not declared with the const or volatile keyword. A void pointer cannot be dereferenced unless it is cast to another type. A void pointer can be converted into any other type of data pointer.
    A void pointer can point to a function, but not to a class member in C++.
    You cannot declare a variable of type void.
      

  14.   

    void*是空指针,反过来他就是万能指针混淆概念了空指针是指指针值为空,即NULL而 void* 只是未限定类型指针,并不是空指针一般用作中间参数方便传递数据,和类型转换比如 int* 转成 CString* 就编译过不去,不过先转 void*, 再转 CString* 就没问题