您的位置:首页 > 编程语言 > C语言/C++

C C++ VC MFC 命名规范

2013-02-27 10:39 337 查看
//****************************************************************************
// -----(C) Lhw978@163.com----
//文 件 名: C C++ VC MFC 命名规范.txt
//收集整理: Heavily (劲草...无香)
//邮 箱: Lhw978@163.com
// QQ: 64616914
// C/C++群: 838925525
//日 期: 2012-03-07
//功 能: C C++ VC MFC 命名规范
//版权声明: 本规范完全自由,可在尊重作者版权的前提下,用于各种合法用途。
// 最终解释权归属作者本人。
//备 注: 本规范由网上公开的零散规范收集整理而成,并加以适当修改。
// 欢迎各位同行的指正、补充、交流。
//****************************************************************************

本命名取自“匈牙利”法,仅供参考。
数据类型的命名规则参考:
定义类型:

前缀 类型 类型描述 示例 占字节(Win32) 有效值 取值范围
-------------------------------------------------------------------------------------
typedef int BOOL VC++自定义BOOL BOOL bFlag 4 (TRUE/FALSE) 非0|0
b Boolena-布尔 1Bit的标志 bool bFlag 1 (true/false) (0x0 ~0x1)
-------------------------------------------------------------------------------------
typedef unsigned char BYTE; BYTE byValue; 1 0 ~255 (0x0 ~0xFF)
by Byte 字节 无符号的8bit字节 unsigned char uchValue; 1 0 ~255 (0x0 ~0xFF)
ch Char 字符 有符号的8bit字节 signed char chValue; 1 -128~127 (0x80~0x7F)
-------------------------------------------------------------------------------------
typedef unsigned SHORT WORD; WORD wValue; 2 0 ~65535 (0x0 ~0xFFFF)
w 不带符号的Word字 无符号的16bit整数 unsigned short usValue; 2 0 ~65535 (0x0 ~0xFFFF)
s 带符号的16位整型数 有符号的16bit整数 signed short sValue; 2 -32768~32767 (0x8000~0x7FFF)
-------------------------------------------------------------------------------------
typedef unsigned int DWORD; DWORD dwValue; 4 0 ~4294967295 (0x0 ~0xFFFFFFFF)
dw 不带符号的doubleword字 无符号的32bit整数 unsigned int unValue; 4 0 ~4294967295 (0x0 ~0xFFFFFFFF)
n 带符号的32位整型数 有符号的32bit整数 signed int nValue; 4 -2147483648~2147483647 (0x80000000~0x7FFFFFFF)
l 带符号的长整型数 long lValue; 4/8
ll 带符号的扩展长整型数 long long llValue; 8
-------------------------------------------------------------------------------------
f 单精度浮点数 单精度浮点数 float fValue; 4
d 双精度浮点数 双精度浮点数 double dValue; 8
-------------------------------------------------------------------------------------
r 引用 float &rfValue;
p 指针(pointer) 指针 char *pchName; 4
pp 多级指针 int **ppnData; 4
lp 长指针(VC++自定义) char FAR* *lpchValue;
pk const指针(pointer) const指针 const char *pkchName; /
/* unsigned char *pchData; 单字符 / unsigned short *pusData; */
/* const int *pknData; / unsigned int *punData; */
psz 指向以0结尾的字符串指针(C风格字符串) char *psz = "Hello World."; 4
sz 以0结尾的字符串(C风格字符串) char sz[] = "Hello World."; 13
char sz[13] = "Hello World."; 13
ach 字符数组 不以0结尾 char achName[2] = {'a', 'b'}; 2
-------------------------------------------------------------------------------------
t typedef自定义类型 union、struct结构体等类型 TNameInfo tName; /
pt 自定义类型指针 union、struct结构体指针等 PTNameInfo *ptName; /
-------------------------------------------------------------------------------------
a Array数组 数组 char achName[20]; /
aa 二维Array数组 多位数组 unsigned char aachName[4][2]; /
-------------------------------------------------------------------------------------
ap 存放指针的数组 存放指针的数组 char *apchName[2]; /
pa 指向数组的指针 指向数组的指针 unsigned char (*paucName)[2]; /
-------------------------------------------------------------------------------------
h Windows对象句柄(VC++自定义) HWND hWnd
v void类型 void *pvValue; 4
k const类型 const int knValue;
en enum枚举类型 枚举类型 EN_NAME enName; 4
c class类 class类 CName cName; /
-------------------------------------------------------------------------------------
pf 函数指针(pointer func) 函数指针 typedef int (*pfMsgFunc)(int type);
-------------------------------------------------------------------------------------
s_ 静态变量(static) 静态变量 static int s_nValue;
g_ 全局变量(global) 全局变量 int g_nValue;
m_ 类的数据成员(member) 类的数据成员 int m_nValue;
-------------------------------------------------------------------------------------

字面常量值:
单精度浮点 float 1.0F/f
双精度浮点 1.0
扩展双精度浮点 long double 1.0L
整型 (unsigned) int 3
长整型 (unsigned) long 3L
双字节字符 w_char L'ab' L'a' L'汉'
双字节字符串 w_char * L"hello world." L"双字节字符串"

宏定义、枚举值: 全部大写字符加下划线(不要以下划线_开头) #define MAX_LEN 256 //不推荐#define _MAX_LEN 256
类名: C开头,首字母大写 class CMyClass{... ...};
结构体、联合体: T开头,首字母大写(包括用户自定义类型) struct TMySTruct{... ...}; union TMyUnion{... ...};
枚举: EM_开头,全部大写字符加下划线 enum EM_MY_ENUM{SUNDAY, MONDY, TUESDAY};
函数名: 首字母大写(函数体不要超过200行),动词或动名 int MyFunction(const char *pkchParam, const int &rknNum){... ...}
虚函数: Do开头 virtual int DoFunction();
回调函数: On开头 void OnTimer(int nParam);
变量名 前缀加首字符大写(不要出现重名、相似名称) int nTotalValue; //名称超过30个字母时应缩写,并注释说明
对于某些用途简单明了的局部变量,也可以使用简化的方式,如:i, j, k, x, y, z

备注:C++中,多用const, 尽可能不用宏定义#define;
以下划线_或双下划线__开头的宏名,已为编译器预留,用户自定义的宏名最好不要以下划线_或双下划线__开头.
除非不得已,否则应该尽可能少使用全局变量。
每行只写一句代码。
操作符之间应适当空格(规则略)。
缩进最好用4个空格代替Tab键。

====================================================================================

VC常用前缀列表:
前缀 类型 描述 例子
ch char 8位字符 chGrade
ch TCHAR 16位UNICODE类型字符 chName
b BOOL 布尔变量 bEnabled
n int 整型(其大小由操作系统决定) nLength
n UINT 无符号整型(其大小由操作系统决定) nLength
w WORD 16位无符号整型 wPos
l LONG 32位有符号整型 lOffset
dw DWORD 32位无符号整型 dwRange
p * Ambient memory model pointer 内存模块指针,指针变量 pDoc
lp FAR* 长指针 lpDoc
lpsz LPSTR 32位字符串指针 lpszName
lpsz LPCSTR 32位常量字符串指针 lpszName
lpsz LPCTSTR 32位UNICODE类型常量指针 lpszName
h handle Windows对象句柄 hWnd
lpfn (*fn)() 回调函数指针 Callback Far pointer to CALLBACK function lpfnAbort

====================================================================================
Windows对象名称缩写:

Windows对象 例子变量 MFC类 例子对象
HWND hWnd; CWnd* pWnd;
HDLG hDlg; CDialog* pDlg;
HDC hDC; CDC* pDC;
HGDIOBJ hGdiObj; CGdiObject* pGdiObj;
HPEN hPen; CPen* pPen;
HBRUSH hBrush; CBrush* pBrush;
HFONT hFont; CFont* pFont;
HBITMAP hBitmap; CBitmap* pBitmap;
HPALETTE hPalette; CPalette* pPalette;
HRGN hRgn; CRgn* pRgn;
HMENU hMenu; CMenu* pMenu;
HWND hCtl; CStatic* pStatic;
HWND hCtl; CButton* pBtn;
HWND hCtl; CEdit* pEdit;
HWND hCtl; CListBox* pListBox;
HWND hCtl; CComboBox* pComboBox;

====================================================================================
VC常用宏定义命名列表:

前缀 符号类型 符号例子 范围
IDR_ 标识多个资源共享的类型 IDR_MAINFRAME 1~0x6FFF
IDD_ 对话框资源(Dialog) IDD_SPELL_CHECK 1~ 0x6FFF
HIDD_ 基于对话框的上下文帮助 HIDD_SPELL_CHECK 0x20001~0x26FF
IDB_ 位图资源(Bitmap) IDB_COMPANY_LOGO 1~0x6FFF
IDC_ 光标资源(Cursor) IDC_PENCIL 1~0x6FFF
IDI_ 图标资源(Icon) IDI_NOTEPAD 1~0x6FFF
ID_、IDM_ 工具栏或菜单栏的命令项 ID_TOOLS_SPELLING 0x8000~0xDFFF
HID_ 命令上下文帮助 HID_TOOLS_SPELLING 0x18000~0x1DFFF
IDP_ 消息框提示文字资源 IDP_INVALID_PARTNO 8~0xDFFF
HIDP_ 消息框上下文帮助 HIDP_INVALID_PARTNO 0x30008~0x3DFFF
IDS_ 字符串资源(String) IDS_COPYRIGHT 1~0x7FFF
IDC_ 对话框内的控制资源 IDC_RECALC 8~0xDFFF

====================================================================================
Microsoft MFC宏命名规范

名称 类型
_AFXDLL 唯一的动态连接库(Dynamic Link Library,DLL)版本
_ALPHA 仅编译DEC Alpha处理器
_DEBUG 包括诊断的调试版本
_MBCS 编译多字节字符集
_UNICODE 在一个应用程序中打开Unicode
AFXAPI MFC提供的函数
CALLBACK 通过指针回调的函数

库标识符命名法
标识符 值和含义
u ANSI(N)或Unicode(U)
d 调试或发行:D = 调试;忽略标识符为发行

静态库版本命名规范
库 描述
NAFXCWD.LIB 调试版本:MFC静态连接库
NAFXCW.LIB 发行版本:MFC静态连接库
UAFXCWD.LIB 调试版本:具有Unicode支持的MFC静态连接库
UAFXCW.LIB 发行版本:具有Unicode支持的MFC静态连接库

动态连接库命名规范
名称 类型
_AFXDLL 唯一的动态连接库(DLL)版本
WINAPI Windows所提供的函数

Windows.h中新的命名规范
类型 定义描述
WINAPI 使用在API声明中的FAR PASCAL位置,如果正在编写一个具有导出API人口点的DLL,则可以在自己的API中使用该类型
CALLBACK 使用在应用程序回调程序,如窗口和对话框过程中的FAR PASCAL的位置
LPCSTR 与LPSTR相同,只是LPCSTR用于只读串指针,其定义类似(const char FAR*)
UINT 可移植的无符号整型类型,其大小由主机环境决定(对于Windows NT和Windows 9x为32位);它是unsigned int的同义词
LRESULT 窗口程序返回值的类型
LPARAM 声明lParam所使用的类型,lParam是窗口程序的第四个参数
WPARAM 声明wParam所使用的类型,wParam是窗口程序的第三个参数
LPVOID 一般指针类型,与(void *)相同,可以用来代替LPSTR
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: