第2章,[标签 Win32] :匈牙利标记法

专栏导航

上一篇:第2章,[标签 Win32] :Windows 数据类型

回到目录

下一篇:第2章,[标签 Win32] :兼容 ASCII 字符与宽字符的 Windows 函数调用

本节前言

在初学编程的时候,我们给变量命令的时候,都是使用一些个比较简单的名字。

那是因为,初学编程的时候,代码量比较小,简单好记的名字,足以满足我们的学习需求。

然而,随着代码量的增长,这个时候,我们就需要一套规范,统一地,来对变量的名字,进行命名了。这可以让变量的名字比较规范,整齐,容易看懂。

变量的命名规范有很多,在 Windows 程序设计领域,通行的变量命名规范,叫做匈牙利标记法。

本节,我们的任务,就是来讲述匈牙利标记法。

其实,在本节之前,我们已经部分地讲解了匈牙利标记法。然而,那个时候,并未系统地去讲述。。本节,我们就要比较详细地,来讲解一下匈牙利标记法了。

想要学习本节内容,你最好首先学习过以下的文章链接中的内容。

参考课节:第2章 :Windows 字符数据类型

参考课节:第2章,[标签 Win32] :Windows 数据类型

接下来,我们开始本节的讲解。

一.    匈牙利标记法

所谓的匈牙利标记法,它是说,在变量名的最左边,是由一个或多个小写英文字母组成的东西,用以表明变量的数据类型。我们可以把这一部分,叫做数据类型字段。比如说,h 代表句柄,i 或 n 代表整数,sz 代表【以零结尾的字符串】,等等。

在数据类型字段之后,是单词组合,每一个单词的首字母为大写,其余的为小写。

假定,我们要定义一个 int 型变量,用它来标识屏幕宽度。那么,它的数据类型为 int 型,所以呢,可以用 n 来作为前缀。屏幕宽度,用英文单词表示为 screen width 。所以呢,这个变量的名字,就成了 nScreenWidth 。

本专栏既讲解 Windows API 知识,也会讲解 MFC 的知识。在 MFC 里面,我们还会跟各种类打交道。

如果某一个变量,它是类的成员变量,则我们还需要在原本的匈牙利标记法之前,加上【m_】前缀。

假定我们想要命名的,表示屏幕宽度的变量 nScreenWidth 是一个类的成员变量,则我们需要给它设定的变量名字为 m_nScreenWidth 。

关于匈牙利标记法,基本内容就这些了。

接下来,我们来看一看各种数据类型的前缀表示法。

二.    匈牙利标记法前缀总结表

前缀数据类型
cchar 或 WCHAR 或 TCHAR
cb整数类型,意思是【字节数】
byBYTE,无符号字符
n 或 i整数,int 型或 short 型
xint 型,表示 x 的坐标
yint 型,表示 y 的坐标
cxint 型,表示 x 的长度,c 表示 count(计数)
cyint 型,表示 y 的长度,c 表示 count(计数)
b 或 fBOOL 型,其实是 int 型。f 表示 flag(标志)
wWORD,无符号短整型
lLONG,长整型
dwDWORD,无符号长整型
fn函数,fn 是 function(函数)的简写
lpfn指向函数的长指针。从 32 位操作系统开始,长指针与指针是同样的意思。所以,lpfn,表示的是【函数指针】这一数据类型。
s字符串
sz以零结尾的字符串
h句柄,h 是 handler(句柄)的简写
p指针
lp长指针,从 32 位操作系统开始,p 和 lp 等价。lp 是 long pointer 的意思
psz 或 lpsz指向以零结尾的字符串的指针,其实和 sz 是一个意思。因为,C/C++ 中表示字符串,都是只给出字符指针,而非给出全部字符。
m_这个前缀,主要用于类的成员变量,用作类的成员变量名的前缀。

三.    注意点

(一)BOOL 型前缀,b 与 f

如果某一个变量为 BOOL 型,则通常使用 b 作为前缀。当然了,你也可以使用 f 前缀。在 C/C++ 中,某一个标志变量,常常是作为 BOOL 型来处理的,只使用其 TRUE 与 FALSE 两个值。TRUE 就是 1,数值上与 C++ 数据类型 bool 中的 true 相等。FALSE 就是 0,数值上与 C++ 数据类型 bool 中的 false 相等。

(二)句柄前缀,h

关于【句柄】的概念,我们在之前的讲解中,虽然有提到。但是呢,有可能,此刻,你对它还是缺乏概念。关于【句柄】,在后面,我们会使用到它的。用得多了,你就明白【句柄】这个概念了。

结束语

匈牙利标记法,不算难,但是呢,也确实是需要大家来掌握的一个小知识点。

可能记不住这里的全部的内容。用到了,随时查阅就好了。用得多了,慢慢地就熟悉了。

 专栏导航

上一篇:第2章,[标签 Win32] :Windows 数据类型

回到目录

下一篇:第2章,[标签 Win32] :兼容 ASCII 字符与宽字符的 Windows 函数调用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/87979.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从深度学习的角度看自动驾驶

从深度学习的角度看自动驾驶 A Survey of Autonomous Driving from a Deep Learning Perspective 我们探讨了深度学习在自主驾驶中的关键模块,例如感知,预测,规划以及控制。我们研究了自主系统的体系结构,分析了如何从模块化&…

java+vue+SpringBoo基于Hadoop的物品租赁系统(程序+数据库+报告+部署教程+答辩指导)

源代码数据库LW文档(1万字以上)开题报告答辩稿ppt部署教程代码讲解代码时间修改工具 技术实现 开发语言:后端:Java 前端:vue框架:springboot数据库:mysql 开发工具 JDK版本:JDK1.8 数…

【文献笔记】Automatic Chain of Thought Prompting in Large Language Models

Automatic Chain of Thought Prompting in Large Language Models 原文代码:https://github.com/amazon-research/auto-cot 标题翻译:大规模语言模型中的自动思维链提示 1. 内容介绍 在提示词中提供思考步骤被称为思维链(CoT)&…

【Behavior Tree】-- 行为树AI逻辑实现- Unity 游戏引擎实现

行为树简易敌人AI 前言: 有些天没更新新文章了,主要是最近科一有些头疼,而且最近琢磨这个行为树代码有些难受,但是终于熬出头了,MonoGame的系列会继续更新的,今天不说别的就说困扰我两三天的行为树 有限状态…

百度大模型开源,俩条命令、本地启动

百度大模型开源 本地启动手册 安装依赖: python -m pip install paddlepaddle-gpu3.1.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/python -m pip install fastdeploy-gpu -i https://www.paddlepaddle.org.cn/packages/stable/fastdeploy-gpu-80_…

rabbitMQ读取不到ThreadLocal消息的bug

rabbitMQ读取不到ThreadLocal消息的bug 当使用消息队列时,监听队列不会运行到主线程上,线程消息之间是不会共享的,故属于主线程的ThreadLocal就读取不到数据的值 主线程名字:main使用消息队列的线程名字:ntContainer#2…

IDEA Maven报错 无法解析 com.taobao:parent:pom:1.0.1【100%解决 此类型问题】

IDEA Maven报错 无法解析com.taobao:parent:pom:1.0.1【100%解决 此类型问题】 报错日志 PS D:\Learn_Materials\IDEA_WorkSpace\Demo\spring_test_demo> mvn clean install -U [INFO] Scanning for projects... [WARNING] [WARNING] Some problems were encountered whi…

函数-1-字符串函数

函数-1-字符串函数字符串函数函数语法字符串函数的使用字符串函数语法案例演示实战练习字符串函数 函数 函数是一段可以直接被另一端程序调用的程序或代码 语法 SELECT 函数名(参数名)大家可能会有那么一点点疑惑, 为什么执行函数还需要加上SELECT语句? 总结一下, 因为SEL…

打破AI落地困局:易路iBuilder的“垂直深耕+开箱即用”破壁之道

中国企业的数字化转型已步入深水区,人力资源管理作为企业核心竞争力的关键引擎,正经历从“信息化”向“智能化”的范式跃迁。在这场以AI为驱动的组织效能革命中,​​易路人力资源科技​​凭借前瞻性的“软件AI服务”战略,推出国内…

Higress离线部署

1.前提条件检查docker和docker compose是否已经具备 [roothost151 ~]# docker -v Docker version 26.1.4, build 5650f9b [roothost151 ~]# docker composeUsage: docker compose [OPTIONS] COMMANDDefine and run multi-container applications with DockerOptions:--all-res…

利用AI技术快速提升图片编辑效率的方法

通过更换背景或进行其他创意编辑,可以为图片赋予新的生命力和视觉效果,使得创意表达更加自由灵活。这款AI抠图工具堪称强大,依托先进的阿尔法通道技术,能够精准、自然地实现图像抠取与背景更换。操作也非常简单,只需将…

Wend看源码-RAGFlow(上)

前言 最近在github上搜罗Rag相关项目的时候,我根据star 搜索到了目前star 最高的一些RAG 项目 ,其中稳居榜首的就是RAGFlow。 RAG stars:>1000 language:Python pushed:>2025-01-01 github RAG 相关项目搜索结果 为了系统性的学习RAG 技术栈&#…

LangChain实现RAG检索增强

1:启动vllm的openai兼容server: export VLLM_USE_MODELSCOPETrue python -m vllm.entrypoints.openai.api_server --model qwen/Qwen-7B-Chat-Int4 --trust-remote-code -q gptq --dtype float16 --gpu-memory-utilization 0.6 2:构建向量数据库 from langchain_…

Redis基础(6):SpringDataRedis

SpringDataRedis简介 SpringData是Spring中专门进行数据操作的模块,包含了对于各种数据库的集成。其中对Redis的集成模块叫做SpringDataRedis(官网地址:Spring Data Redis)。其最核心的特点就是提供了不同Redis客户端的整合&…

B. Shrinking Array/缩小数组

B. Shrinking Array让我们称一个数组 b 为 i 美丽 ,如果它至少包含两个元素,并且存在一个位置 |bi−bi1|≤1 使得 |x| (其中 x 是 #10# #11# 的绝对值)。给定一个数组 a ,只要它至少包含两个元素,你就可以执行以下操作&#xff1a…

【学习笔记】Linux系统中SSH服务安全配置

一、背景知识 以ubuntu为例,查看ssh服务是否安全并配置,执行 ssh -V ssh的配置文件路径:/etc/ssh/sshd_config 二、SSH服务配置文件 1.端口和监听设置 Port 22 含义:指定SSH服务监听的端口号(默认是22&#xff09…

FastAPI + Tortoise-ORM + Aerich 实现数据库迁移管理(MySQL 实践)

在 FastAPI 项目中,Tortoise-ORM 是一个轻量的异步 ORM 框架,适用于 async/await 场景。结合数据库迁移工具 Aerich,可以优雅地管理数据库表结构演进,本文将通过完整流程演示如何在 MySQL 环境下使用。📦 一、环境准备…

7.7日 实验03-Spark批处理开发(2)

使用Spark处理数据文件检查数据检查$DATA_EXERCISE/activations里的数据&#xff0c;每个XML文件包含了客户在指定月份活跃的设备数据。拷贝数据到HDFS的/dw目录样本数据示例&#xff1a;<activations><activation timestamp"1225499258" type"phone&q…

C语言可变参数感悟

#include <stdio.h> #include <stdarg.h> #if 1 /* *在C语言中&#xff0c;可变参函数是指参数数量不固定的函数&#xff0c;比如printf\scanf *可变参函数的语法&#xff1a; *返回类型 函数名&#xff08;固定函数&#xff0c;.....) { //函数体 } *1、包含头文件…

LeetCode 1248.统计优美子数组

给你一个整数数组 nums 和一个整数 k。如果某个连续子数组中恰好有 k 个奇数数字&#xff0c;我们就认为这个子数组是「优美子数组」。 请返回这个数组中 「优美子数组」 的数目。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2,1,1], k 3 输出&#xff1a;2 解释&#xf…