windows基础数据类型

前言 

微软一直想制定一些标准 ,来绑架程序员,来统一  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
	据说 有一期 是外包到 印度 所以变成这样。。
        







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值