C++编程(一):匈牙利命名法

匈牙利命名法

许多 Windows 程序员都使用“匈牙利标记法”作为变量命名约定。这是为了纪念具有传奇色彩的微软程序员 Charles Simonyi。这种标记法非常简单,其基本原则为:

  1. 即变量名(标识符)以一个或者多个小写字母开始,这些字母表示变量的数据型态。例如:szCmdLine 中的 sz 代表“以0结尾的字符串(StringZero)”;在 hInstance 和 hPrevInstance 中的 h 前缀表示“句柄(Handle)”;在 iCmdShow 中的 i 前缀表示“整型(Integer)”。

  2. 前缀以后就是一个首字母大写(或者多个)的单词,这些单词清楚地指出了源代码内那个对象的用途。比如:m_szStudentName表示一个学生名字的类成员变量,数据类型是字符串型

  3. 当命名结构变量时,可以用结构名(或者结构名的一种缩写)的小写形式作为变量名称的前缀,或者用作整个变量名。例如:msg 变量是 MSG 型态的结构;wndclass 是 WNDCLASSEX 型态的一个结构;ps 是一个 PAINTSTRUCT 结构,rect 是一个 RECT 结构。

匈牙利表示法能够帮助程序写作者及早发现并避免程序中的错误。由于变量名既描述了变量的作用,又描述了其数据型态,就比较容易避免产生数据型态不合的错误。

下表列出了经常用到的变量名前缀:

1)属性前缀:

前缀数据类型
g_全局变量
c_常量
m_c++类成员变量
s_静态存储变量
rg_寄存器变量
ex_外部变量

2)一般变量类型前缀:

前缀数据类型
cchar 8位字符 ;cGrade
str,sstring 字符型 ;strName
sz以"\0"结束的字符串 ;szAppName
ch字符 char 或 WCHAR 或 TCHAR 如果_UNICODE定义,则为16位字符 chName
b,fBOOL 布尔值 ,f 表示“flag”;bEnable
by字节 BYTE (无符号字符)
n,iint 整型(其大小依赖于操作系统);nLength
sishort int 短整型 ;siSequ
nUINT 无符号值(其大小依赖于操作系统);nHeight
wWORD(无符号短整型) 16位无符号值 ;wPos
ffloat 浮点型(有时也指文件) ;fRadius
ddouble 双精度型 ;dArea
lLONG 长整型 ;lOffset
ldlong double 长双精度型 ;ldRate
dwDWORD 双字(32位无符号长整型) ;dwRange
p* 指针 ;pDoc
lpFAR* 远指针 ;lpszName
lpszLPSTR 32位常量字符串指针 ;lpszName
lpszLPCSTR 32位常量字符串指针 ;lpszName
lpszLPCTSTR 如果_UNICODE定义,则为32位常量字符串指针 ;lpszName
hhandle Windows对象句柄 ;hWnd
lpfncallback 指向CALLBACK函数的远指针
if输入文件流 ;ifDataFile
of输出文件流 ;ofStuFile
fn函数
h句柄
x,yint,表示 x 坐标和 y 坐标
cx,cyint,表示 x 或 y 的长度,c 表示“count”(计数)
c(通常用cnt)计数
C类或结构 ; CDocument,CPrintInfo
S结构体 ; SAddress
r实型
u无符号
v无效

3)描述前缀

前缀数据类型
Max最大
Min最小
Init初始化
T(或Temp)临时变量
Src源对象
Dest目的对象

4)Microsoft MFC变量(宏)命名规范

前缀数据类型
IDR_不同类型的多个资源共享标识; IDR_MAIINFRAME; 1~0x6FFF
IDD_对话框资源; IDD_SPELL_CHECK; 1~0x6FFF
HIDD_对话框资源的Help上下文; HIDD_SPELL_CHECK; 0x20001~0x26FF
IDB_位图资源; IDB_COMPANY_LOGO; 1~0x6FFF
IDC_光标资源; IDC_PENCIL; 1~0x6FFF
IDI_图标资源;IDI_NOTEPAD;1~0x6FFF
ID_来自菜单项或工具栏的命令; ID_TOOLS_SPELLING; 0x8000~0xDFFF
HID_命令Help上下文; HID_TOOLS_SPELLING;0x18000~0x1DFFF
IDP_消息框提示; IDP_INVALID_PARTNO;8~0xDEEF
HIDP_消息框Help上下文; HIDP_INVALID_PARTNO;0x30008~0x3DEFF
IDS_串资源; IDS_COPYRIGHT;1~0x7EEF
IDC_对话框内的控件; IDC_RECALC; 8~0xDEEF
_AFXDLL唯一的动态连接库(Dynamic Link Library,DLL)版本
_ALPHA仅编译DEC Alpha处理器
_DEBUG包括诊断的调试版本
_MBCS编译多字节字符集
_UNICODE在一个应用程序中打开Unicode
AFXAPIMFC提供的函数
CALLBACK通过指针回调的函数

5)Microsoft MFC、句柄、控件及结构的命名规范
在这里插入图片描述

示例:

(1)文件名的匈牙利命名法:
文件的名称也应该遵循匈牙利命名法,其以“F”+名字(名字首字母大写)的形式出现。比如:

	FFun.cpp(工程名)FName.c(文件名)(打开VC++之后的命名)

(2)常量的匈牙利命名法:
所有的常量命名都是以“c_”+名字(名字都是大写字母,多个单词用“_”连接)的形式出现。比如:

	# define c_MAX_NUM 100;

(3)变量的匈牙利命名法:
应用匈牙利命名法,所有的变量名都应该以前缀+名字(名字首字母大写)的形式出现。比如:

	char szName;int iNum;

PS:计数(备注)变量不适用匈牙利命名法,直接使用i,j,k。

(4)函数的匈牙利命名法:
函数的命名不带前缀,函数中每一个单词的开头字母都要大写。比如:

	int ConvertNumber(int ix);void ShowMessage(char szMessage);

(5)结构体的匈牙利命名法:
结构体类型命名必须以“”+名字(名字都是大写字母,多个单词用“”连接)的形式出现。替代名以名字都是大写字母,多个单词用“”连接的形式出现。结构体变量命名必须以“m”+名字(与变量命名一致)的形式出现。比如:

typedef struct _DATABAS
{
char m_ szProductName[20];
char m_szAuthor[20];
char m_szReleaseDate[16];
char m_szVersion[10];
}DBS_DATABASE;

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

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

相关文章

工业机器人国内外的发展现状

工业机器人国内外的发展现状 工业机器人是集合了机械原理、系统动力学、机构运动学、计算机技术、控制理论、传感和人工智能等多种先进技术于一身的综合性装备[10]。1959年,由享有“机器人之父”美誉的恩格尔﹒伯格先生和德奥尔先生于美国共同发明了第一台工业机器…

知识图谱、深度学习、AutoML,推荐系统与新技术结合将碰撞出怎样的火花?

来源:CSDN App近日,来自意大利米兰理工大学 Maurizio 团队发表的一篇极具批判性的文章火了。这篇文章剑指推荐系统领域的其他数十篇论文,并通过多项试验证明这些论文中基于深度学习的推荐算法大部分都存在不同程度的数据集缺失和源码缺失的问…

VS2015无法打开包括文件corecrt.h 无法打开文件ucrtd.lib

VS2015无法打开包括文件"corecrt.h" 无法打开文件"ucrtd.lib" 在网上是VS2015的一个BUG,如果是选择"从父级或项目默认设置继承"时,在Windows Kits\10\include 和 Windows Kits\10\lib 目录下导入的是10.0.10240.0文件夹&…

面向对象的七大设计原则

总脉络图: 一:单一职责原则(全称:“Single-Responsibility Principle”)又称 单一功能原则 核心:解耦和增强内聚性(高内聚,低耦合) 说明: 就一个类而言,应该只专注于做一…

人机融合智能的思考

来源:人机与认知实验室【人机智能难于融合的主要原因就在于时空和认知的不一致性,人处理的信息与知识能够变异,其表征的一个事物、事实既是本身同时又是其他事物、事实,一直具有相对性,机器处理的数据标识缺乏这种相对…

工艺篇:常用表面处理

工艺篇:常用表面处理 表面处理定义 表面处理是在基体材料表面上人工形成一层与基体的机械、物理和化学性能不同的表层的工艺方法。表面处理的目的是满足产品的耐蚀性、耐磨性、装饰或其他特种功能要求,表面处理按照机理来分可以分为以下4部分&#xff…

NASA发现超级地球,真的适宜居住?

来源:中国新闻网中新网8月2日电 当地时间7月31日,NASA宣布,他们的凌日系外行星勘测卫星(TESS),在距离地球约31光年的地方,发现了一颗可能有生命存在的“超级地球”。天文学家制作的GJ357d星球概念图。图片来源&#xf…

Excel制作随机抽取名单

首先建立名单,假设放在A列 然后选一个方格用来存抽取结果,并在该方格中输入INDEX(A:A,RANDBETWEEN(1,8)),1:8表示第1行到第8行 此时按下F9键就可以生成随机的名单了 增加抽取效果: 首先选取全部名单: 点击条件格式→…

RuntimeError: CUDA out of memory. Tried to allocate 132.00 MiB (GPU 2; 3.95 GiB total capacity; 3.41

pytorch报错:RuntimeError: CUDA out of memory. Tried to allocate 132.00 MiB (GPU 2; 3.95 GiB total capacity; 3.41 GiB already allocated; 37.88 MiB free; 98.29 MiB cached) 如果是训练时遇到该问题,说明模型的参数太多了,将模型的…

31个惊艳的数据可视化作品,让你感受“数据之美”!

来源:中国智慧城市导刊在一个信息大爆炸的时代,每天都有很多的新消息、新发现、新趋势向我们狂轰乱炸而来。在这个过程中,我们既是数据的生产者,也是数据的使用者,然而初次获取和存储的原始数据总是杂乱无章的。要想数…

BBC分析了365个职业,发现最不可能被机器淘汰的居然是……

来源:中国智慧城市导刊记得钱塘江大潮期间,有段视频在网上走红:观潮的人群拥挤在钱塘江边,争看远处潮水滚滚而来,当人们前一秒还在沉浸在拍照嬉闹中,下一秒滔天巨浪已拍上岸边,避之不及的围观人…

工艺篇:表面粗糙度

表面粗糙度 表面粗糙度(surface roughness)是指加工表面具有的较小间距和微小峰谷的不平度 。其两波峰或两波谷之间的距离(波距)很小(在1mm以下),它属于微观几何形状误差。表面粗糙度越小,则表面越光滑。 …

从Nature 封面文章“天机”芯片看脑科学与AI的融合

来源:混沌巡洋舰7月31日Nature杂志封面刊登了清华类脑计算团队的最新成果:天机芯片以及由其操控的自行车。Towards artificial general intelligence with hybrid Tianjic chip architecture这则信息在一天之内在AI圈子引起了热议,而大部分吃…

[BZOJ4530][Bjoi2014]大融合 LCT + 启发式合并

[BZOJ4530][Bjoi2014]大融合 试题描述 小强要在N个孤立的星球上建立起一套通信系统。这套通信系统就是连接N个点的一个树。这个树的边是一条一条添加上去的。在某个时刻,一条边的负载就是它所在的当前能够联通的树上路过它的简单路径的数量。例如,在上图…

器件篇:步进电机

器件篇:步进电机 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号&#xf…

pytorch中的参数初始化方法

参数初始化(Weight Initialization) PyTorch 中参数的默认初始化在各个层的 reset_parameters() 方法中。例如:nn.Linear 和 nn.Conv2D,都是在 [-limit, limit] 之间的均匀分布(Uniform distribution)&…

物理学走到尽头了吗?

图片来源:pixabay.com来源: 蔻享学术我的英雄理查德费曼(Richard Feynman)曾开玩笑地说:“爱因斯坦是个巨人。他的头虽然在云里,脚却踩在地上。而我们这些个子不高的人则必须做出一个选择!”可我…

QT示例:基于TCP点对点Socket通讯

QT示例:基于TCP点对点通讯一、 概述二、TCP 协议工作原理三、TCP 编程模型四、基于TCP点对点通讯示例1、客户端2、客户端Client示例3、服务器4、服务器server示例下载:基于TCP点对点通讯 一、 概述 二、TCP 协议工作原理 三、TCP 编程模型 四、基于TCP点…

50 年人类登月史:那些不为人知的故事

来源: CSDN2019年7月20日是纪念人类登月五十周年的好日子。人类于1969年首次正式登上月球,历史将永远铭记两位宇航员的名字:尼尔阿姆斯特朗与巴兹奥尔德林。 然后,这背后还有很多不为人知的故事。 在我们庆祝首次登月成功的同时&a…

物理学走到尽头了吗 | 维尔切克专栏

来源:环球科学撰文 | 弗兰克维尔切克(Frank Wilczek)翻译 | 胡风 梁丁当“物理学家沉迷于追求数学的优美,却正在丧失解决新问题的能力。” “顶级的物理学家不再关心物理现实——当然他们也不用关心这些。” “科学完了。”这几句…