如果这是一个基本或愚蠢的问题,我深表歉意。
char*
和 LPSTR
有什么区别。其中 sizeof
在我的编译器中都给出了 4 个字节。有人能给我详细解释一下吗。谢谢..
LPSTR
是一种 Windows 类型,无论您在哪个平台上编译,它都是相同的。这是一个指向字符串的长指针。
回到分段架构时代(旧的 64K 分段,而不是较新的基于选择器的分段内存),那里有微型、小型、中型、大型和巨型内存模型,Windows 类型始终相同非常重要,无论指针
char *
是什么类型。
因此,如果您使用底层类型不同的不同编译器,则
windows.h
头文件将定义 LPSTR
来弥补这一点。
例如,Borland C 可能有一个 16 位
char *
,并且 LPSTR
可能必须定义为 far char *
。在 char *
已经是长/远指针的编译器中,LPSTR
会直接使用它。
如今,对于 32 位以上的平面模型,可能不再需要这样的恶作剧,尽管在 64 位和 32 位代码之间进行 thunking 之类的事情“可能”仍然会发生。尽管如此,当时定义的类型仍然存在,并且仍在广泛使用。
在 32 位(及更高版本)处理器上,它们是完全相同的。 Microsoft 仅出于历史原因才使用 LPSTR。