c语言函数命名规范.docx
- 文档编号:29902998
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:13
- 大小:20.48KB
c语言函数命名规范.docx
《c语言函数命名规范.docx》由会员分享,可在线阅读,更多相关《c语言函数命名规范.docx(13页珍藏版)》请在冰豆网上搜索。
c语言函数命名规范
竭诚为您提供优质文档/双击可除
c语言函数命名规范
篇一:
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
符串
tmtextmetric
uunsignedint
ulunsignedlong(ulong)整数长整数长指针一个类的数据短整数指针字符串以0结尾的字文本规则无符号整数无符号长整数
wwoRd(unsignedshort)无符号短整数
x,yx,ycoordinates(short)坐标值/短整数
vvoid空
有关项目的全局变量用g_开始,类成员变量用m_,局部变量若函数较大则可考虑用l_用以
显示说明其是局部变量。
前缀类型例子
g_全局变量g_servers
c类或者结构体cdocument,cprintinfo
m_成员变量m_pdoc,m_ncustomers
Vc常用前缀列表:
前缀类型描述例子
chchar8位字符chgrade
chtchaR16位unicode类型字符chname
bbool布尔变量benabled
nint整型(其大小由操作系统决定)nlength
nuint无符号整型(其大小由操作系统决定)nlength
wwoRd16位无符号整型wpos
llong32位有符号整型loffset
dwdwoRd32位无符号整型dwRange
p*ambientmemorymodelpointer内存模块指针,指针变量pdoc
lpFaR*长指针lpdoc
lpszlpstR32位字符串指针lpszname
lpszlpcstR32位常量字符串指针lpszname
lpszlpctstR32位unicode类型常量指针lpszname
hhandlewindows对象句柄hwnd
lpfn(*fn)()回调函数指针callbackFarpointertocallbackfunctionlpfnabort
windows对象名称缩写:
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常用宏定义命名列表:
前缀符号类型符号例子范围
篇二:
c语言变量命名规则
1、严格采用阶梯层次组织程序代码:
各层次缩进的分格采用Vc的缺省风格,即每层次缩进为4格,括号位于下一行。
要求相匹配的大括号在同一列,对继行则要求再缩进4格。
例如:
2、提示信息字符串的位置
在程序中需要给出的提示字符串,为了支持多种语言的开发,除了一些给调试用的临时信息外,其他所有的提示信息必须定义在资源中。
3、对变量的定义,尽量位于函数的开始位置。
二、命名规则:
1、变量名的命名规则
①、变量的命名规则要求用“匈牙利法则”。
即开头字母用变量的类型,其余部分用变量的英文意思或其英文意思的缩写,尽量避免用中文的拼音,要求单词的第一个字母应大写。
即:
变量名=变量类型+变量的英文意思(或缩写)
对非通用的变量,在定义时加入注释说明,变量定义尽量可能放在函数的开始处。
见下表:
bool(bool)用b开头bisparent
byte(byte)用by开头byFlag
short(int)用n开头nstepco(c语言函数命名规范)unt
long(long)用l开头lsum
char(chaR)用c开头ccount
float(Float)用f开头favg
double(double)用d开头ddeta
void(Void)用v开头vVariant
unsignedint(woRd)用w开头wcount
unsignedlong(dwoRd)用dw开头dwbroad
handle(hinstance)用h开头hhandle
dwoRd用dw开头dwword
lpcstR(lpctstR)用str开头strstring
用0结尾的字符串用sz开头szFilename
对未给出的变量类型要求提出并给出命名建议给技术委员会。
②、指针变量命名的基本原则为:
对一重指针变量的基本原则为:
“p”+变量类型前缀+命名
如一个float*型应该表示为pfstat
对多重指针变量的基本规则为:
二重指针:
“pp”+变量类型前缀+命名
三重指针:
“ppp”+变量类型前缀+命名
......
③、全局变量用g_开头,如一个全局的长型变量定义为g_lFailcount,即:
变量名=g_+变量类型+变量的英文意思(或缩写)
④、静态变量用s_开头,如一个静态的指针变量定义为s_plperv_inst,即:
变量名=s_+变量类型+变量的英文意思(或缩写)
⑤、成员变量用m_开头,如一个长型成员变量定义为m_lcount;即:
变量名=m_+变量类型+变量的英文意思(或缩写)
⑥、对枚举类型(enum)中的变量,要求用枚举变量或其缩写做前缀。
并且要求用大写。
如:
enumcmemdays
{
emdays_monday;
emdays_tuesday;
……
};
⑦、对struct、union、class变量的命名要求定义的类型用大写。
并要加上前缀,其内部变量的命名规则与变量命名规则一致。
结构一般用s开头
如:
structscmnpoint
{
intnx;//点的x位置
intny;//点的y位置
};
联合体一般用u开头
如:
unionucmlpoint
{
longlx;
longly;
}
类一般用c开头
如:
classccmFpoint
{
public:
floatfpoint;
};
对一般的结构应该定义为类模板,为以后的扩展性考虑
如:
template
classccmtVector3d
{
public:
typex,y,z;
};
⑧、对常量(包括错误的编码)命名,要求常量名用大写,常量名用英文表达其意思。
如:
#definecm_File_not_FoundcmmakehR(0x20b)其中cm表示类别。
⑨、对const的变量要求在变量的命名规则前加入c_,即:
c_+变量命名规则;例如:
constchar*c_szFilename;
2、函数的命名规范:
函数的命名应该尽量用英文表达出函数完成的功能。
遵循动宾结构的命名法则,函数名中动词在前,并在命名前加入函数的前缀,函数名的长度不得少于8个字母。
例如:
longcmgetdevicecount(……);
3、函数参数规范:
①、参数名称的命名参照变量命名规范。
②、为了提高程序的运行效率,减少参数占用的堆栈,传递大结构的参数,一律采用指针或引用方式传递。
③、为了便于其他程序员识别某个指针参数是入口参数还是出口参数,同时便于编译器检查错误,应该在入口参数前加入const标志。
如:
……cmcopystring(constchar*c_szsource,char*szdest)
4、引出函数规范:
对于从动态库引出作为二次开发函数公开的函数,为了能与其他函数以及windows的函数区分,采用类别前缀+基本命名规则的方法命名。
例如:
在对动态库中引出的一个图象编辑的函数定义为imgFunctionname(其中img为image缩写)。
现给出三种库的命名前缀:
①、对通用函数库,采用cm为前缀。
②、对三维函数库,采用vr为前缀。
③、对图象函数库,采用img为前缀。
对宏定义,结果代码用同样的前缀。
5、文件名(包括动态库、组件、控件、工程文件等)的命名规范:
文件名的命名要求表达出文件的内容,要求文件名的长度不得少于5个字母,严禁使用象file1,myfile之类的文件名。
三、注释规范:
1、函数头的注释
对于函数,应该从“功能”,“参数”,“返回值”、“主要思路”、“调用方法”、“日期”六个方面
用如下格式注释:
//程序说明开始
//================================================================////功能:
从一个string中删除另一个string。
//参数:
strbydelete,strtodelete
//(入口)strbydelete:
被删除的字符串(原来的字符串)
//(出口)strtodelete:
要从上个字符串中删除的字符串。
//返回:
找到并删除返回1,否则返回0。
(对返回值有错误编码的要//求列出错误编码)。
//主要思路:
本算法主要采用循环比较的方法来从strbydelete中找到//与strtodelete相匹配的字符串,对多匹配strbydelete
//中有多个strtodelete子串)的情况没有处理。
请参阅:
//书名......
//调用方法:
......
//日期:
起始日期,如:
2000/8/21.9:
40--2000/8/23.21:
45
//================================================================//函数名(……)
//程序说明结束
①、对于某些函数,其部分参数为传入值,而部分参数为传出值,所以对参数要详细说明该参数是入口参数,还是出口参数,对于某些意义不明确的参数还要做详细说明(例如:
以角度作为参数时,要说明该角度参数是以弧度(pi),还是以度为单位),对既是入口又是出口的变量应该在入口和出口处同时标明。
等等。
②、函数的注释应该放置在函数的头文件中,在实现文件中的该函数的实现部分应该同时放置该注释。
③、在注释中应该详细说明函数的主要实现思路、特别要注明自己的一些想法,如果有必要则应该写明对想法产生的来由。
对一些模仿的函数应该注释上函数的出处。
④、在注释中详细注明函数的适当调用方法,对于返回值的处理方法等。
在注释中要强调调用时的危险方面,可能出错的地方。
⑤、对日期的注释要求记录从开始写函数到结束函数的测试之间的日期。
⑥、对函数注释开始到函数命名之间应该有一组用来标识的特殊字符串。
如果算法比较复杂,或算法中的变量定义与位置有关,则要求对变量的定义进行图解。
对难以理解的算法能图解尽量图解。
2、变量的注释:
对于变量的注释紧跟在变量的后面说明变量的作用。
原则上对于每个变量应该注释,但对于意义非常明显的变量,如:
i,j等循环变量可以不注释。
例如:
longllinecount//线的根数。
3、文件的注释:
文件应该在文件开头加入以下注释:
/////////////////////////////////////////////////////////////////////
//工程:
文件所在的项目名。
//作者:
**,修改者:
**
//描述:
说明文件的功能。
//主要函数:
…………
//版本:
说明文件的版本,完成日期。
//修改:
说明对文件的修改内容、修改原因以及修改日期。
//参考文献:
......
/////////////////////////////////////////////////////////////////////
为了头文件被重复包含要求对头文件进行定义如下:
#ifndef__Filename_h__
#define__Filename_h__
其中Filename为头文件的名字。
4、其他注释:
在函数内我们不需要注释每一行语句。
但必须在各功能模块的每一主要部分之前添加块注释,注释每一组语句,在循环、流程的各分支等,尽可能多加以注释。
其中的循环、条件、选择等位置必须注释。
对于前后顺序不能颠倒的情况,建议在注释中增加序号。
例如:
在其他顺序执行的程序中,每隔3—5行语句,必须加一个注释,注明这一段语句所组成的小模块的作用。
对于自己的一些比较独特的思想要求在注释中标明。
四、程序健壮性:
1、函数的返回值规范:
对于函数的返回位置,尽量保持单一性,即一个函数尽量做到只有一个返回位置。
(单入口单出口)。
要求大家统一函数的返回值,所有的函数的返回值都将以编码的方式返回。
例如编码定义如下:
#definecm_point_is_nullcmmakehR(0x200)
:
:
建议函数实现如下:
long函数名(参数,……)
{
longlResult;//保持错误号
lResult=cm_ok;
//如果参数有错误则返回错误号
篇三:
c语言命名规则
宏定义
宏定义全部采用大写方式,不同单词间采用“_”连接。
除非有明确含义的单词,否则单词采用全拼方式。
变量定义
变量命名采用下列各式进行命名:
前缀+类型+含义前缀:
前缀采用小写形式表示,用于标识变量作用域以及变量类型。
前缀只有下列几种情况:
g_表示全局变量
c_表示const类型变量gc_表示全局const变量
对于局部变量,可无需添加前缀
类型:
类型采用小写字母表示,用于标识变量的数据类型,如是指针类型,则在类型前加上小写的p,如是数组类型,则在类型前面加上小写的a。
常采用数据类型的缩写来表
含义:
含义用于对该变量的标识以及自解释。
含义字段采用多个单词首字母大写的格式。
含义字段中的单词力求简洁明了,尽量去除一些无意义或有歧义的词汇。
单词拼写要求除非是非常明了以及通用的缩写(如temp可用tmp表示),否则使用全拼。
举例:
g_dwcurrenttemperature,该变量含义是一个全局变量,数据类型为32位无符号类型,含义为当前温度。
类型定义
因为c语言中没有明确定义int和long类型的数据长度,为了移植方便,严禁使用,可使用以下名称来表示c标准类型:
int8,uint8,int16,uint16,int32,uint32。
允许使用byte、word和dword来分别定义uint8、uint16和uint32类型。
结构体与联合体
1.类型定义
结构体/联合体类型必须采用typedef的方式来定义,结构体类型必须以”s_”(s大写)开头,联合体类型必须以”u_”(u大写)开头。
后面全部采用首字母大写的方式拼写,对于原先大写的缩写单词也要采用首字母大写的方式。
2.内部成员
因为结构体/联合体本身的命名已有一定的含义,故内部成员名称可精简。
3.成员变量
命名规则参考“变量命名”章节。
举例:
下列描述方式是不允许的:
structs_person{//没有使用typedef方式,person首字母没有大写intage;//int必须改为int16或者int32,age前应加上类型charname[20];};
应改为:
typedefstruct{int16iage;characname[20];}s_person;
函数定义
函数采用首字母大写的方式进行拼写。
常采用动宾结构,尽量做到简洁明了,禁止使用具有歧义的的词语。
如:
命函数名changeValue,我们就无法得知Value指代的是什么含义,必须以具有明确含义的词语来代替,可改为changetemperature表示更改温度值(无需写成changetemperatureValue,因为changetemperature的含义已经够明确了,加上Value反而显得拖沓)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 函数 命名 规范