杂货边角(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

相关文章

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

Linux编译器--gcc/g++使用方式

《Linux编译器--gcc/g++使用方式》文章主要介绍了C/C++程序的编译过程,包括预编译、编译、汇编和链接四个阶段,并详细解释了每个阶段的作用和具体操作,同时,还介绍了调试和发布版本的概念... 目录一、预编译指令1.1预处理功能1.2指令1.3问题扩展二、编译(生成汇编)三、汇编(生成二进制机器语

在 Windows 上安装 DeepSeek 的完整指南(最新推荐)

《在Windows上安装DeepSeek的完整指南(最新推荐)》在Windows上安装DeepSeek的完整指南,包括下载和安装Ollama、下载DeepSeekRXNUMX模型、运行Deep... 目录在www.chinasem.cn Windows 上安装 DeepSeek 的完整指南步骤 1:下载并安装

Rust 数据类型详解

《Rust数据类型详解》本文介绍了Rust编程语言中的标量类型和复合类型,标量类型包括整数、浮点数、布尔和字符,而复合类型则包括元组和数组,标量类型用于表示单个值,具有不同的表示和范围,本文介绍的非... 目录一、标量类型(Scalar Types)1. 整数类型(Integer Types)1.1 整数字

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用

Python在固定文件夹批量创建固定后缀的文件(方法详解)

《Python在固定文件夹批量创建固定后缀的文件(方法详解)》文章讲述了如何使用Python批量创建后缀为.md的文件夹,生成100个,代码中需要修改的路径、前缀和后缀名,并提供了注意事项和代码示例,... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5.

Windows自动化Python pyautogui RPA操作实现

《Windows自动化PythonpyautoguiRPA操作实现》本文详细介绍了使用Python的pyautogui库进行Windows自动化操作的实现方法,文中通过示例代码介绍的非常详细,对大... 目录依赖包睡眠:鼠标事件:杀死进程:获取所有窗口的名称:显示窗口:根据图片找元素:输入文字:打开应用:依

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

windows端python版本管理工具pyenv-win安装使用

《windows端python版本管理工具pyenv-win安装使用》:本文主要介绍如何通过git方式下载和配置pyenv-win,包括下载、克隆仓库、配置环境变量等步骤,同时还详细介绍了如何使用... 目录pyenv-win 下载配置环境变量使用 pyenv-win 管理 python 版本一、安装 和