pax*_*blo 90
LPVOID
C中没有类型,它是Windows的东西.
这些东西存在的原因是底层类型可以在不影响源代码的情况下从发行版更改为发布版.
例如,假设早期版本的Microsoft C编译器有16位int
和32位long
.他们可以简单地使用:
typedef long INT32
Run Code Online (Sandbox Code Playgroud)
瞧,你有32位整数类型.
现在让我们继续前进几年,直到Microsoft C使用32位int
和64位long
.为了使源代码功能正常,他们只需将typedef
行更改为:
typedef int INT32
Run Code Online (Sandbox Code Playgroud)
这与您long
用于32位整数类型时必须执行的操作形成对比.您必须浏览所有源代码并确保更改自己的定义.
从兼容性角度(不同版本的Windows之间的兼容性)来使用Microsoft的数据类型更清晰.
在回答您的具体问题时,可能可以使用void*
而不是LPVOID
提供 预期不会改变的定义LPVOID
.
但我不会,以防万一.你永远不知道微软是否会在未来引入一些不同的处理通用指针的方式来改变它的定义LPVOID
.使用Microsoft的类型并没有真正丢失任何东西,但如果他们更改定义并且您决定使用基础类型,则可能需要在将来做一些工作.
您可能认为指针不会受到这种变化的影响,但是,在创建Windows的最初8088天,指针和内存模型(微小,小,大,巨大等)都存在各种奇怪现象,这些指针允许指针即使在相同的环境中也具有不同的尺寸.
Meh*_*ari 11
LPVOID
简直就是一个Windows API typedef
的void*
.
归档时间: |
|
查看次数: |
43592 次 |
最近记录: |