windows基础数据类型

xiaoxiao2021-02-28  101

前言 

微软一直想制定一些标准 ,来绑架程序员,来统一  c c++的目的   目前还没达到,但是引发了各种问题     

自己的类型  windows Data Types

1、认为 c语言无法正确表示他的语义 所以定义了大量的自己的类型

所以 只有用微软的 sdk的时候才能使用的类型  并非 c c++通用

2、他所有的数据类型都是对c语言的数据类型进行在包装,或结构体包装

bit 是一个位 byte 基础单元 8位 __int8 8位的int __int16 16位的int __int32 32位的int __int64 64位的int BOOL typedef int BOOL 它是32位的bool BOOLEAN typedef BYTE BOOLEAN 它是8位的bool wchar_t typedef unsigned short wchar_t CHAR typedef char CHAR BYTE typedef unsigned char BYTE 表示数据长度8位 WORD unsigned short 表示数据长度16位 DWORD typedef unsigned long 表示数据长度32位 DWORD_PTR 表示 32位地址值 HANDLE typedef void *HANDLE; 句柄 HRESULT typedef long HRESULT; 表示返回值这只是数据的一小部分常用的      详细的 请看文档 [MS-DTYP]-151016   下载链接 点击打开链接

3、那些坑

PFLOAT num = 10000.00;//不能复制 只能申请空间 PFLOAT num =malloc(sizeof(PFLOAT)); //float *num =malloc(sizeof(float*));//很坑 *num = 1.000; free(num); ------------------------------------------------ DWORD_PTR 和 DWORD一样 表示 32位地址值所以再次赋值的时候需要强制转换 DWORD_PTR dpDemo =num; *(PFLOAT)dpDemo =20; * *32位系统下,内存地址值的长度 32位 ->DWORD_PTR(存储地址值) *64位系统时,内存长度变成了 64位 DWORD_PTR 64位 为了向后兼容 *作用 做偏移计算 *取值 *(PFLOAT)dpDemo =300; * * * *这么愚蠢的东西 不用不就好了 少年你太天真了 * API有的函数返回值或参数就是 这个类型。。。

4、微软的命名规则

PBYTE 前面加了一个P代表是一个指针 point LP L 是long WCHAR C 是 const WCHAR 是 字符 PWCHAR 是字符指针 STR 代表字符串 W 宽 A 窄 T 模板 根据工程而定 unicode ->TCHAR->wchar_t 否则 ->CHAR->char 如果设置 根据 字符集来设置 设计理念是很好的 但是实际上没有做到 没有什么用

5.不知道真假的黑历史

DWORD32 。。。等等 直接当做int用 DWORD64 据说 有一期 是外包到 印度 所以变成这样。。

转载请注明原文地址: https://www.6miu.com/read-73988.html

最新回复(0)