当前位置: 首页 > news >正文

Windows核心编程中整型定义规范

在Windows核心编程中,不推荐使用C标准整型(如int、long),而是优先采用WinNT.h头文件中定义的固定大小整型类型,以确保跨位数(32位/64位)、跨编译器的兼容性。

一、核心原则:为何不用C标准整型?

C标准仅规定了整型的“最小位数”(如int至少16位),但未明确固定大小,导致在不同平台(如32位Windows和64位Windows)下大小可能变化,直接引发兼容性问题。

  • 示例:32位Windows中long为32位,64位Windows中long仍为32位(与部分Unix系统不同),若依赖long的位数编写代码,易出现内存越界或数据截断。
  • 解决方案:Windows SDK通过WinNT.h定义了“位数明确”的整型类型,强制统一大小,从根源避免兼容性问题。

二、常用固定大小整型类型(WinNT.h定义)

Windows核心编程中,整型按“符号性”和“位数”分为四大类,下表列出最常用类型及其用途:

类型名称符号性位数等价C标准类型(参考)核心用途
BYTE无符号8unsigned char表示字节数据(如二进制流)
WORD无符号16unsigned short表示16位无符号数据(如端口号)
DWORD无符号32unsigned long表示32位无符号数据(如状态码)
QWORD无符号64unsigned __int64表示64位无符号数据(如大数值)
CHAR有符号8char表示8位有符号字符/数据
SHORT有符号16short表示16位有符号数据
INT有符号32int表示32位有符号数据(通用)
LONG有符号32long与INT等价,Windows API中常用
LONGLONG有符号64__int64表示64位有符号数据

三、特殊场景:指针大小整型(跨位数兼容关键)

当整型需与“指针地址”关联(如内存地址、句柄计数)时,需使用指针大小的整型类型,其位数会随系统位数(32位/64位)自动匹配,避免指针截断。

类型名称符号性32位系统位数64位系统位数核心用途
INT_PTR有符号3264存储带符号的指针相关数值
UINT_PTR无符号3264存储无符号的指针相关数值(如地址)
LONG_PTR有符号3264与INT_PTR等价,API中更常用
DWORD_PTR无符号3264与UINT_PTR等价,API中更常用

四、编程实践:输出与格式说明符

使用Windows整型类型时,需搭配对应的printf/wprintf格式说明符,避免格式不匹配导致输出错误。常用对应关系如下:

整型类型格式说明符示例代码(输出DWORD值)
BYTE/WORD%uprintf("WORD值:%u\n", wVal);
DWORD%luprintf("DWORD值:%lu\n", dwVal);
QWORD%lluprintf("QWORD值:%llu\n", qwVal);
INT_PTR/DWORD_PTR%Iuprintf("DWORD_PTR值:%Iu\n", dpVal);
LONGLONG%lldprintf("LONGLONG值:%lld\n", llVal);

关键说明:%Iu(大写I)是Windows专用格式符,自动适配32位/64位系统,优先用于INT_PTR/DWORD_PTR等指针大小类型。

五、实战示例代码

#include <Windows.h>
#include <stdio.h>int main() {// 1. 固定大小整型定义与输出BYTE bByte = 0x1A;          // 8位无符号DWORD dwCount = 1024;       // 32位无符号QWORD qwSize = 4294967296;  // 64位无符号printf("BYTE值:0x%02X\n", bByte);    // 输出:0x1Aprintf("DWORD值:%lu\n", dwCount);    // 输出:1024printf("QWORD值:%llu\n", qwSize);    // 输出:4294967296// 2. 指针大小整型定义与输出(跨32/64位兼容)DWORD_PTR dpAddr = (DWORD_PTR)&dwCount;  // 存储变量地址printf("变量地址(DWORD_PTR):%Iu\n", dpAddr);  // 用%Iu适配位数return 0;
}
http://www.dtcms.com/a/570784.html

相关文章:

  • 网站运营需要哪些知识网站编辑做图片用什么
  • 网站首页下拉广告网页登录界面制作
  • 电子工程建设信息网站二本网络工程就业前景
  • 网站建设需要c语言吗企业解决方案架构师
  • 网站做ulr跳转软件销售具体怎么做的
  • 高端品牌网站建设特点网页上做ppt的网站
  • django可以做多大的网站网络营销优缺点
  • 成免费crm推广网站珠海建设企业网站
  • 视频弹幕网站怎么做的网站建设付款分期付款协议
  • 骏域建网站重庆在线官网
  • 做百度推广会送网站吗深圳相册制作
  • Expert Systems with Applications (ESWA)期刊模版说明
  • 山东咕果做网站怎么样网页设计与制作教程第六版答案
  • 可以找人帮忙做设计的网站阿里云网站商城建设
  • c++17_filesystem
  • 触摸未来2025-11-04:他山之石可以攻玉,研究transformer
  • 网站开发存在的风险ps制作网站效果图
  • python 题目练习1~5
  • 网站建设组织架构免费100个简历模板
  • 做网站或者app深圳中小型网站建设公司
  • 网站建设推广刺盾云别墅室内设计网站
  • 徐州本地网站专业版简历
  • 鸿蒙HarmonyOS开源项目:知乎日报-爱影家-爱音乐-后台接口资源分享
  • 使用c 语言建设网站优点开发者
  • 机器视觉在芯片贴合中的应用
  • Razor VB 循环
  • 手机网站导航按钮网站前段打不开 后台也进不去
  • 山西省建设厅官网站软件开发是什么意思
  • 龙岗网站建设企业如何用dreamer做网站
  • 学校网站建设方案及报价河北智慧团建网站登录