杂货边角(6):Windows的数据类型和编译器固定数据类型对照

2023-10-12 22:32

本文主要是介绍杂货边角(6):Windows的数据类型和编译器固定数据类型对照,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基本数据类型作为我们经常用到的东西其实经常容易被我们忽略其中的小文章,有些情况下如果没搞清楚其中的对应关系,则很容易导致我们的程序可移植性下降。

short(__int16)long (__int32)long long(__int64)编译器层面提供的规定,分别是2、4、8字节。

int 、float、doubleC语言层面提供的规定,在32位程序上分别是4\4\8 Bytes,但未来随着系统升级可能会出现更改,从而并不固定。

word Dword是和平台相关的,在Windows现今的版本中是写死的,其中word = unsigned short 即2字节; Dword = unsigned long即4字节,并且无论32位还是64位都是不变的。故而涉及到位操作相关的整数,最好还是用word和DWord,而int等可能和平台系统升级而改变,另一发面则是出于程序的修改便捷性考虑word dword是重新定义的数据类型;故而如果真的要更改也可以直接更改宏定义,而用int等C语言提供的数据类型,可能一旦系统升级,导致int等基本数据类型的字长扩展,则意味这得在程序中修改所有用int声明的地方,得花费大量时间一一更改。

Windows下的自定义数据类型的定义可以在C:\Program Files\Microsoft VisualStudio\VC98\Include查看头文件WINDEF.h得到,主要来看一些常用的

/*
*float, long, short, int, char 这几个数据类型都是熟悉的C/C++的数据类型吧,微软重新封装了一些,
*从而方便Windows的日后升级不会应为C语言层面的标准更改导致浪费精力一一修改
*这里可以借鉴的原则便是:不是自己掌握的标准,则尽量通过集中的批量声明来将外部标准转换自己内部的标准
*如Windows借助宏定义的方式添加一层抽象层,从而避免了直接使用int\float等外部标准数据类型,导致
*C语言标准更改带来的系统代码移植性差的问题,要知道在远古的16位时代,int可是2字节的哦
*/typedef float FLOAT;typedef long LONG;typedef short SHORT typedef int INT;typedef char CHAR;typedef  int  BOOL; typedef unsigned int UINT;typedef unsigned int UINT32;typedef signed int INT32;typedef unsigned long DWORD;typedef unsigned short WORD;

而关于Windows API中经常出现的自定义数据类型的意义请参考这里,为防止文章丢失,将其内容摘录于此。

ATOM                   原子(原子表中的一个字符串的参考)
BOOL                   布尔变量
BOOLEAN                布尔变量
BYTE                   字节(8位)
CCHAR                  Windows字符
CHAR                   Windows字符
COLORREF               红、绿、蓝(RGB)彩色值(32位)
Const                  变量,该变量的值在执行期间保持为常量
CRITICAL_SECTION       临界段对象
CTRYID                 国名标识符
DLGPROC                指向一个对话框过程的指针
DWORD                  双字(32位)
ENHMFENUMPROC          指向一个应用程序定义的回调函数的指针,该回调函数枚举增强的元文件记录
ENUMRESLANGPROC        指向一个应用程序定义的回调函数的指针,该回调函数枚举资源语言。
ENUMRESNAMEPROC        指向一个应用程序定义的回调函数的指针,该回调函数枚举资源名称。
ENUMRESTYPEPROC        指向一个应用程序定义的回调函数的指针,该回调函数枚举资源类型。
FARPROC                指向一个回调函数的指针
FLOAT                  浮点变量
FMORDER                32位字体映射值的数组
FONTENUMPROC           指向一个应用程序定义的回调函数的指针,该回调函数枚举字体
GOBJENUMPROC           指向一个应用程序定义的回调函数的指针,该回调函数枚举图形设备接口(GDI)对象
HACCEL                 加速键表句柄
HANDLE                 对象的句柄
HBITMAP                位图句柄
HBRUSH                 画刷句柄
HCONV                  动态数据交换(DDE)会话句柄
HCONVLIST              DDE会话句柄
HCURSOR                光标句柄
HDC                    设备描述表(DC)句柄
HDDEDATA               DDE数据句柄
HDLG                   对话框句柄
HDWP                   延期窗口位置结构句柄
HENHMETAFILE           增强原文件句柄
HFILE                  文件句柄
HFONT                  字体句柄
HGDIOBJ                GDI对象句柄
HGLOBAL                全局内存块句柄
HHOOK                  钩子句柄
HICON                  图标句柄
HINSTANCE              实例句柄
HKEY                   登记关键字句柄
HLOCAL                 局部内存块句柄
HMEMU                  菜单句柄
HMETAFILE              元文件句柄
HMIDIIN                乐器的数字化接口(MIDI)输入文件句柄
HMIDIOUT               MIDI输出文件句柄
HMMIO                  文件句柄
HOOKPROC               指向一个应用程序定义的钩子函数的指针
HPALETTE               调色板句柄
HPEN                   画笔句柄
HRGN                   域句柄
HRSRC                  资源句柄
HSZ                    DDE字符串句柄
HWAVEIN                波形输入文件句柄
HWAVEOUT               波形输出文件句柄
HWINSTA                工作站句柄
HWND                   窗口句柄
INT                    符号整数
LANGID                 语言标识符
LCID                   所在国(Locale)标识符
LCTYPE                 所在国类型
LINEDDAPROC            指向一个回调函数的指针,该回调函数处理行坐标
LONG                   32位符号整数
LP                     指向一个以"NULL"结束的Unicode(TM)字符串的指针
LPARAM                 32位消息参数
LPBOOL                 指向一个布尔变量的指针
LPBYTE                 指向一个字节的指针
LPCCH                  指向一个Windows字符常量的指针
LPCCHOOKPROC           指向一个应用程序定义的钩子函数的指针
LPCFHOOLPROC           指向一个应用程序定义的钩子函数的指针
LPCH                   指向一个Windows字符的指针
LPCOLORREF             指向一个COLORREF值的指针
LPCRITICAL_SECTION     指向一个临界段对象的指针
LPCSTR                 指向一个以"NULL"结束的WINDOWS字符串常量的指针
LPCTSTR                指向一个以"NULL"结束的Unicode或Windows字符串常量的指针      
LPCWCH                 指向一个以"NULL"指向一个以"NULL"结束的Unicode字符常量的指针 
LPCWSTR                指向一个以"NULL"指向一个以"NULL"结束的Unicode字符串常量的指针
LPDWORD                指向一个无符号双字(32位)的指针               
LPFRHOOLPROC           指向一个应用程序定义的钩子函数的指针
LPHANDLE               指向一个句柄的指针
LOHANDLER_FUNCTION     指向一个处理程序函数的指针
LPHWAVEIN              指向一个波形输入文件句柄的指针
LPHWAVEOUT             指向一个波形输出文件句柄的指针
LPINT                  指向一个符号整数的指针
LPLONG                 指向一个符号长整数(32位)的指针
LPOFNHOOKPROC          指向一个应用程序定义的钩子函数的指针
LPPRINTHOOKPROC        指向一个应用程序定义的钩子函数的指针
LPSETUPHOOKPROC        指向一个应用程序定义的钩子函数的指针
LPTSTR                 指向一个以NULL结束的Unicode或Windows字符串的指针
LRESULT                消息处理的符号结果
LPVOID                 指向任何类型的指针
LPWSTR                 指向一个以"NULL"结束的Unicode字符串的指针
LUID                   局部唯一的标识符
MCIDEVICEID            媒体控制接口(MCI)设备标识符
MFENUMPROC             指向一个应用程序定义的回调函数的指针,该回调函数枚举元文件记录
MMRESULT               多媒体消息的处理结果
NPSTR                  指向一个以"NULL"结束的Windows字符串的指针
NWPSTR                 指向一个以"NULL"结束的Unicode字符串的指针
PBOOL                  指向一个布尔变量的指针
PBYTE                  指向一个字节的指针
PCCH                   指向一个Windows字符常量的指针
PCH                    指向一个Windows字符的指针
PCHAR                  指向一个Windows字符的指针
PCRITICAL_SECTION      指向一个临界段对象的指针
PCSTR                  指向一个以"NULL"结束的Windows字符串常量的指针
PCWCH                  指向一个Unicode字符常量的指针
PCWSTR                 指向一个以"NULL"结束的Unicode字符串常量的指针
PDWORD                 指向一个无符号双字的指针
PFLOAT                 指向一个浮点变量的指针
PFNCALLBACK            指向一个回调函数的指针
PHANDLE                指向一个句柄的指针
PHANDLER_ROUTINE       指向一个处理程序的指针
PHKEY                  指向一个登记关键字的指针
PINT                   指向一个符号整数的指针
PLONG                  指向一个符号长整数的指针
PLUID                  指向一个局部唯一的表示符(LUID)的指针
PROPENUMPROC           指向一个应用程序定义的回调函数的指针,该回调函数枚举窗口特征
PSHORT                 指向一个符号短整数的指针
PSID                   指向一个加密标识符(SID)的指针
PSTR                   指向一个以"NULL"结束的Windows字符串的指针
PSZ                    指向一个以"NULL"结束的Windows字符串的指针
PTCH                   指向一个Windows或Unicode字符的指针
PTCHAR                 指向一个Windows或Unicode字符的指针
PTSTR                  指向一个以"NULL"结束的Windows或Unicode字符串的指针
PUCHAR                 指向一个无符号Windows字符的指针
PUINT                  指向一个无符号整数的指针
PULONG                 指向一个无符号长整数的指针
PUSHORT                指向一个无符号短整数的指针
PVOID                  指向任何类型的指针
PWCH                   指向一个Unicode字符的指针
PWCHAR                 指向一个Unicode字符的指针
PWORD                  指向一个无符号字的指针
PWSTR                  指向一个以"NULL"结束的Unicode字符串的指针
REGSAM                 登记关键字的加密掩码
SC_HANDLE              服务句柄
SERVICE_STATUS_HANDLE  服务状态值句柄
SHORT                  短整数
SPHANDLE               指向一个句柄的指针
TCHAR                  Unicode或Windows字符
TIMERPROC              指向一个应用程序定义的定时器回调函数的指针
UCHAR                  无符号Windows字符
UINT                   无符号整数
ULONG                  无符号长整数
USHORT                 无符号短整数
VOID                   任何类型
WCHAR                  Unicode字符
WNDENUMPROC            指向一个应用程序定义的回调函数的指针,该回调函数枚举窗口
WNDPROC                指向一个应用程序定义的窗口过程的指针
WORD                   无符号字(16位)
WPARAM                 32位消息参数
YIELDPROC              指向一个输出回调函数的指针

这篇关于杂货边角(6):Windows的数据类型和编译器固定数据类型对照的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/198894

相关文章

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

Windows Server服务器上配置FileZilla后,FTP连接不上?

《WindowsServer服务器上配置FileZilla后,FTP连接不上?》WindowsServer服务器上配置FileZilla后,FTP连接错误和操作超时的问题,应该如何解决?首先,通过... 目录在Windohttp://www.chinasem.cnws防火墙开启的情况下,遇到的错误如下:无法与

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L

Python解析器安装指南分享(Mac/Windows/Linux)

《Python解析器安装指南分享(Mac/Windows/Linux)》:本文主要介绍Python解析器安装指南(Mac/Windows/Linux),具有很好的参考价值,希望对大家有所帮助,如有... 目NMNkN录1js. 安装包下载1.1 python 下载官网2.核心安装方式3. MACOS 系统安

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Windows命令之tasklist命令用法详解(Windows查看进程)

《Windows命令之tasklist命令用法详解(Windows查看进程)》tasklist命令显示本地计算机或远程计算机上当前正在运行的进程列表,命令结合筛选器一起使用,可以按照我们的需求进行过滤... 目录命令帮助1、基本使用2、执行原理2.1、tasklist命令无法使用3、筛选器3.1、根据PID

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

Windows环境下安装达梦数据库的完整步骤

《Windows环境下安装达梦数据库的完整步骤》达梦数据库的安装大致分为Windows和Linux版本,本文将以dm8企业版Windows_64位环境为例,为大家介绍一下达梦数据库的具体安装步骤吧... 目录环境介绍1 下载解压安装包2 根据安装手册安装2.1 选择语言 时区2.2 安装向导2.3 接受协议