博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
typedef void far *LPVOID 的具体定义
阅读量:7088 次
发布时间:2019-06-28

本文共 771 字,大约阅读时间需要 2 分钟。

首先这里的far,在32位系统已经废除不用了。它是C/C++语言在16位系统中用以标明指针是个远指针的修饰符。

远指针是说指针所指向的地址已经超出了64K(2的十六次方),所以需要使用DS加偏移量的方法来寻址,而不能直接寻址。其反义的修饰符是near。

举例:

   int far *fptr;      

      fptr=(int far*)0xb0000000; 

16位PC机的存储器地址是由段地址和偏移地址组合而成,每一段不能超过64k字节地址,因而同一个段内的地址存取,用偏移地址就可以实现,因段地址寄存器所存的段地址是不变的。当用指针时,只16位就够了,这一类就是near指针。当要在另一个段内取数据,就要跨越段,即要指明存取段的段地址和偏移地址,这时段地址寄存器所存段地址要改变,在使用指针指向另一个段内地址时,就要用32位表示,就是far指针了。由此可见,如果你想写在Win16上也能运行的程序,才会涉及到newr、far指针的概念。在Win32上,指针已无near、far的区分。

LPVOID 在MSDN上的定义:A 32-bit pointer to an unspecified type.  32位上未指明的类型。

例子:

 

HANDLE ThreadHandle = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)ThreadProc, this, 0, NULL); //线程回调函数this这里可以传任何变量。

DWORD WINAPI MyClass::ThreadProc(LPVOID Param)
{
//这时候传进来什么类型,Param就是什么类型。
return 0;
}

 

转载于:https://www.cnblogs.com/littlepear/p/5933649.html

你可能感兴趣的文章
BZOJ 1806 IOI2007 Miners 矿工配餐 动态规划
查看>>
参考例子,学习Func<T, TResult>委托
查看>>
NTFS For Mac 如何简单操作
查看>>
django 生成复杂的 PDF 文件(数据较多时)
查看>>
CodeForces 300C 最短路
查看>>
睡觉被憋醒
查看>>
Java 7 Fork/Join 框架
查看>>
c++中冒号(:)和双冒号(::)的用法
查看>>
dubbo工作原理
查看>>
驱动开发利器Microsoft Windows Driver Kit 7.1.0下载
查看>>
[MongoDB]索引
查看>>
maven_项目的依赖、聚合、继承
查看>>
一个C++类的注释:
查看>>
Winsock IO模型之select模型
查看>>
开发规范
查看>>
vim中tab转为空格
查看>>
Android Studio导入第三方类库的方法(转)
查看>>
union和union all的区别
查看>>
debian attempt to kill init!
查看>>
centos7下使用yum安装mysql
查看>>