C语言命名规则

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

匈牙利命名法是微软推广的一种关于变量、函数、对象、前缀、宏定义等各种类型的符号的命名规范。匈牙利命名法的主要思想是:在变量和函数名中加入前缀以增进人们对程序的理解。它是由微软内部的一个匈牙利人发起使用的,结果它在微软内部逐渐流行起来,并且推广给了全世界的Windows开发人员。下面将介绍匈牙利命名法,后面的例子里也会尽量遵守它和上面的代码风格。aArray数组bBOOL(int)布尔(整数)byUnsignedChar(Byte)无符号字符(字节)cChar字符(字节)cbCountofbytes字节数crColorreferencevalue颜色(参考)值cxCountofx(Short)x的集合(短整数)dwDWORD(unsignedlong)双字(无符号长整数)fFlags(usuallymultiplebitvalues)标志(一般是有多位的数值)fnFunction函数g_global全局的hHandle句柄iInteger整数lLong长整数lpLongpointer长指针m_Datamemberofaclass一个类的数据成员nShortint短整数pPointer指针sString字符串szZeroterminatedString以0结尾的字符串tmTextmetric文本规则uUnsignedint无符号整数ulUnsignedlong(ULONG)无符号长整数wWORD(unsignedshort)无符号短整数x,yx,ycoordinates(short)坐标值/短整数vvoid空有关项目的全局变量用g_开始,类成员变量用m_,局部变量若函数较大则可考虑用l_用以显示说明其是局部变量。前缀类型例子g_全局变量g_ServersC类或者结构体CDocument,CPrintInfom_成员变量m_pDoc,m_nCustomersVC常用前缀列表:前缀类型描述例子chchar8位字符chGradechTCHAR16位UNICODE类型字符chNamebBOOL布尔变量bEnablednint整型(其大小由操作系统决定)nLengthnUINT无符号整型(其大小由操作系统决定)nLengthwWORD16位无符号整型wPoslLONG32位有符号整型lOffsetdwDWORD32位无符号整型dwRangep*Ambientmemorymodelpointer内存模块指针,指针变量pDoclpFAR*长指针lpDoclpszLPSTR32位字符串指针lpszNamelpszLPCSTR32位常量字符串指针lpszNamelpszLPCTSTR32位UNICODE类型常量指针lpszNamehhandleWindows对象句柄hWndlpfn(*fn)()回调函数指针CallbackFarpointertoCALLBACKfunctionlpfnAbortWindows对象名称缩写:Windows对象例子变量MFC类例子对象HWNDhWnd;CWnd*pWnd;HDLGhDlg;CDialog*pDlg;HDChDC;CDC*pDC;HGDIOBJhGdiObj;CGdiObject*pGdiObj;HPENhPen;CPen*pPen;HBRUSHhBrush;CBrush*pBrush;HFONThFont;CFont*pFont;HBITMAPhBitmap;CBitmap*pBitmap;HPALETTEhPalette;CPalette*pPalette;HRGNhRgn;CRgn*pRgn;HMENUhMenu;CMenu*pMenu;HWNDhCtl;CStatic*pStatic;HWNDhCtl;CButton*pBtn;HWNDhCtl;CEdit*pEdit;HWNDhCtl;CListBox*pListBox;HWNDhCtl;CComboBox*pComboBox;VC常用宏定义命名列表:前缀符号类型符号例子范围IDR_标识多个资源共享的类型IDR_MAINFRAME1~0x6FFFIDD_对话框资源(Dialog)IDD_SPELL_CHECK1~0x6FFFHIDD_基于对话框的上下文帮助HIDD_SPELL_CHECK0x20001~0x26FFIDB_位图资源(Bitmap)IDB_COMPANY_LOGO1~0x6FFFIDC_光标资源(Cursor)IDC_PENCIL1~0x6FFFIDI_图标资源(Icon)IDI_NOTEPAD1~0x6FFFID_、IDM_工具栏或菜单栏的命令项ID_TOOLS_SPELLING0x8000~0xDFFFHID_命令上下文帮助HID_TOOLS_SPELLING0x18000~0x1DFFFIDP_消息框提示文字资源IDP_INVALID_PARTNO8~0xDFFFHIDP_消息框上下文帮助HIDP_INVALID_PARTNO0x30008~0x3DFFFIDS_字符串资源(String)IDS_COPYRIGHT1~0x7FFFIDC_对话框内的控制资源IDC_RECALC8~0xDFFFMicrosoftMFC宏命名规范名称类型_AFXDLL唯一的动态连接库(DynamicLinkLibrary,DLL)版本_ALPHA仅编译DECAlpha处理器_DEBUG包括诊断的调试版本_MBCS编译多字节字符集_UNICODE在一个应用程序中打开UnicodeAFXAPIMFC提供的函数CALLBACK通过指针回调的函数库标识符命名法标识符值和含义uANSI(N)或Unicode(U)d调试或发行:D=调试;忽略标识符为发行静态库版本命名规范库描述NAFXCWD.LIB调试版本:MFC静态连接库NAFXCW.LIB发行版本:MFC静态连接库UAFXCWD.LIB调试版本:具有Unicode支持的MFC静态连接库UAFXCW.LIB发行版本:具有Unicode支持的MFC静态连接库动态连接库命名规范名称类型_AFXDLL唯一的动态连接库(DLL)版本WINAPIWindows所提供的函数Windows.h中新的命名规范类型定义描述WINAPI使用在API声明中的FARPASCAL位置,如果正在编写一个具有导出API人口点的DLL,则可以在自己的API中使用该类型CALLBACK使用在应用程序回调程序,如窗口和对话框过程中的FARPASCAL的位置LPCSTR与LPSTR相同,只是LPCSTR用于只读串指针,其定义类似(constcharFAR*)UINT可移植的无符号整型类型,其大小由主机环境决定(对于WindowsNT和Windows9x为32位);它是unsignedint的同义词LRESULT窗口程序返回值的类型LPARAM声明lParam所使用的类型,lParam是窗口程序的第四个参数WPARAM声明wParam所使用的类型,wParam是窗口程序的第三个参数LPVOID一般指针类型,与(void*)相同,可以用来代替LPSTRMSDN中给出了一段遵守代码风格和匈牙利命名法的代码参考如下:1#include“sy.h”2externint*rgwDic;3externintbsyMac;4structSY*PsySz(charsz[])6{7char*pch;8intcch;9structSY*psy,*PsyCreate();10int*pbsy;11intcwSz;12unsignedwHash=0;13pch=sz;14while(*pch!=0)15wHash=wHash11+*pch++;16cch=pch-sz;17pbsy=&rgbsyHash[(wHash&077777)%cwHash];18for(;*pbsy!=0;pbsy=&psy-bsyNext)19{20char*szSy;21szSy=(psy=(structSY*)&rgwDic[*pbsy])-sz;22pch=sz;23while(*pch==*szSy++)24{25if(*pch++==0)26return(psy);27}28}29cwSz=0;30if(cch=2)31cwSz=cch-2/sizeof(int)+1;32*pbsy=(int*)(psy=PsyCreate(cwSY+cwSz))-rgwDic;33Zero((int*)psy,cwSY);34bltbyte(sz,psy-sz,cch+1);35return(psy);36}按照MS方式编程:匈牙利符号表示法匈牙利符号表示法包括许多与下列命名有关的约定:(1)变量(2)函数(3)类型和常量(4)类(5)参数匈牙利符号表示法的前缀代码指导说明书:**************************************************************************前缀数据类型(基本类型)C字符BY字节N短整数和整数(表示一个数)I整数X,Y短整数(通常用于X坐标和Y坐标)CX,CY短整数(通常用于表示X和Y的长度,C表示计数)B布尔型WUINT(无符号数)和WORD(无符号字)LLONG(长整数)DWDWORD(无符号长整数)FN函数指针S串SZ,STR以0字节终止的字符串LP32位长整数指针H编号(常用于表示Windows对象)MSG消息**************************************************************************变量的命名:应用匈牙利表示法,变量可用上表中的前缀代码来表示。另外,当一个变量是由一个或几个子名构成时,每一个子名都要以大写字母开头。下面是几个例子:char*szfileName;//anullaterminatedstring:以0终止的字符串int*lpidate;//a32-bitpointertoanint:指向一个整型变量的32位的长指针Bool,bSemaphore;//abooleanvalueWORDdwMaxCount//a32-bitunsignedWORD尽管我们了解一个函数的局部变量没有说明,但是也有个别表示全局变量必须要以g_开头:intg_iXPos;//aglobalx-positionintg_iTimer;//aglobaly-positionchar*g_szString//aglobalNULLterminatedstring函数的命名:函数和变量的命名方式相同,但是没有前缀,换句话说,子名的第一个字母要大写。下面是几个例子:intPlotPixel(intix,intiy,intic);void*MemScan(char*szString);而且,下划线是非法的。例如,下面的函数名表示是无效的匈牙利表示法:intGet_Pixel(intix,intiy);类型和常量的命名:所有的类型和常量都是大写字母,但名字中可以允许有下划线。如:constLONGNUM_SECTORS=100;//aC++styleconstant#defineMAX_CELLS64;//aCstyleconstant#definePOWERUNIT100;//aCstyleconstanttypedefunsignedcharUCHAR;//auserdefinedtype类的命名类命名的约定可能要麻烦一点。但我也看到有很多人在使用这个约定,并独立地进行补充。不管怎么说,所有C++的类必须以大写C为前缀,类名字的每一个子名的第一个字母都必须大写:classCVector//thechinesemeanofvectoris矢量{publicCVector();{ix=iy=iz=imagnitude=0;}//thechinesemeanofmagnitudeis大小CVector(intx,inty,intz){ix=x;iy=y;iz=z;}......private:intix,iy,iz;//theposi

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功