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

相关文章

Python变量与数据类型全解析(最新整理)

《Python变量与数据类型全解析(最新整理)》文章介绍Python变量作为数据载体,命名需遵循字母数字下划线规则,不可数字开头,大小写敏感,避免关键字,本文给大家介绍Python变量与数据类型全解析... 目录1、变量变量命名规范python数据类型1、基本数据类型数值类型(Number):布尔类型(bo

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Windows的CMD窗口如何查看并杀死nginx进程

《Windows的CMD窗口如何查看并杀死nginx进程》:本文主要介绍Windows的CMD窗口如何查看并杀死nginx进程问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录Windows的CMD窗口查看并杀死nginx进程开启nginx查看nginx进程停止nginx服务

Windows 系统下 Nginx 的配置步骤详解

《Windows系统下Nginx的配置步骤详解》Nginx是一款功能强大的软件,在互联网领域有广泛应用,简单来说,它就像一个聪明的交通指挥员,能让网站运行得更高效、更稳定,:本文主要介绍W... 目录一、为什么要用 Nginx二、Windows 系统下 Nginx 的配置步骤1. 下载 Nginx2. 解压

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.