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,一经查实,立即删除!

相关文章

jQuery基本过滤选择器

1 <% page language"java" import"java.util.*" pageEncoding"utf-8"%>2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">3 <html>4 <head>5 <!-- jQuery基本过滤选择器 -->6 …

IndexError: tensors used as indices must be long, byte or bool tensors

下面的程序会报错IndexError: tensors used as indices must be long, byte or bool tensors mask torch.Tensor([True,True,False]) a torch.Tensor([3,2,1]) a[mask]0 print(a) 原因是索引要为long, byte 或 bool类型&#xff0c;因此需要将mask转换为bool类型&#xff0…

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

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

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

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

团队博客 一 需求分析

团队名字&#xff1a;全都是土豆 团队成员&#xff1a;组长&#xff1a;张哲 成员&#xff1a;冯钰彤、魏利华 博客地址&#xff1a;张哲&#xff1a;http://www.cnblogs.com/zz0906/ 魏利华&#xff1a;http://www.cnblogs.com/a1397240667/ 冯钰彤&#xff1a;http://www.cnb…

RuntimeError: Subtraction, the `-` operator, with a bool tensor is not supported. If you are trying

下面的程序会报错&#xff1a;RuntimeError: Subtraction, the - operator, with a bool tensor is not supported. If you are trying to invert a mask, use the ~ or logical_not() operator instead. mask torch.Tensor([True,True,False]).type(torch.bool) a torch.Te…

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

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

面向对象的七大设计原则

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

人机融合智能的思考

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

工艺篇:常用表面处理

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

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

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

Excel制作随机抽取名单

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

SHELL编程(一)---------hello world

首先我们来了解一下什么是shell,无论什么操作系统都有shell,现代操作系统都可以简单的认为是内核(kernel)文件系统(filesystem)的方式存在的.操作系统主要是通过内核进行工作的,而用户并不能直接操作内核让其为自己工作(为了保护内核,内核不正确将直接导致系统的崩溃).shell中文…

工艺篇:硬度介绍

硬度介绍 硬度是衡量金属材料软硬程度的一种性能指标。硬度的试验方法很多&#xff0c;按硬度试验方法的不同&#xff0c;硬度的试验方法很多&#xff0c;基本上可以分为压入法(如布氏、洛氏、维氏硬度等)、刻划法(如莫氏法等)、回跳法(如肖氏法)等几种&#xff1a; 1、压入法…

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

pytorch报错&#xff1a;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) 如果是训练时遇到该问题&#xff0c;说明模型的参数太多了&#xff0c;将模型的…

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

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

PCB板一般缺陷检测法及其优缺点分析

PCB板一般缺陷检测法及其优缺点分析1 PCB( Printed Circuit Board 印刷电路板)是电子产品中众多电子元器件的承载体&#xff0c;它为各电子元器件的秩序连接提供了可能&#xff0c;PCB已成为现代电子产品的核心部分。随着现代电子工业迅猛发展&#xff0c;电子技术不断革新&am…

VS2013报错:错误:没有与这些操作匹配的《运算符

错误:没有与这些操作匹配的<<运算符 发现是因为程序中使用了string&#xff0c;但是头文件没有加上#include<string>

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

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

pytorch查看应用指数衰减后的学习率

在pytorch中使用指数衰减后&#xff0c;想着将每轮训练后的学习率打印出来&#xff0c;看指数衰减是否起作用了&#xff0c;于是在每轮训练后通过下面代码查看学习率&#xff1a; print("lr:",net.lr) 发现不管训练多少轮&#xff0c;打印出来的学习率都为初始设定…