2vi*_*on2 16 c windows winapi visual-c++
如果这是一个基本或愚蠢的问题,我道歉.char*
和之间有什么区别LPSTR
.其中sizeof
既给出了我的编译器4个字节.有人可以详细解释我.谢谢..
pax*_*blo 20
LPSTR
是一种Windows类型,无论您正在编译什么平台,都应该是相同的.它是一个指向字符串的长指针.
回到分段架构(旧的64K段,而不是新的基于选择器的分段存储器)的时代,你有小型,小型,中型,大型和大型内存模型,重要的是Windows类型始终是相同的,无论指针char *
是什么类型.
因此,如果您遵循底层类型不同的不同编译器,则windows.h
头文件将定义LPSTR
以补偿它.
例如,Borland C可能有16位char *
,LPSTR
可能必须定义far char *
它.在char *
已经是长/远指针的编译器中,LPSTR
将使用它.
如今,使用32位以上的平面模型,可能没有真正需要这样的恶作剧,尽管它可能仍然发生在诸如64位和32位代码之间的thunking之类的事情上.尽管如此,那里定义的类型仍然存在,但仍在使用中.
差异被埋藏在时间的深处。LPSTR 代表“指向字符串的长指针”。回到 32 位处理器之前,指向可能位于不同内存段(想想,在内存中很远的地方)的内存的指针需要额外的空间来存储。
在 32 位(及更高版本)处理器上,它们完全相同。Microsoft 仅出于历史原因使用 LPSTR。
归档时间: |
|
查看次数: |
21949 次 |
最近记录: |