c编码规范

2024-09-08

c编码规范(精选4篇)

c编码规范 篇1

C++编码规范之命名空间

C++编码规范之命名空间Namespaces在.cc文件中,提倡使用不具名的命名空间。使用具名命名空间时,其名称可基于项目或路径名称,不要使用using指示符。定义:命名空间将全局作用域细分为不同的,具名的作用域,可有效防止全局作用域的命名冲突。优点:命名空间提供了命名轴线.当然类也提供了命名轴线。缺点:命名空间具有迷惑性,因为它们和类一样提供了额外的命名轴线。在头文件中使用不具名的空间容易违背C++的唯一定义原则。1)不具名命名空间在.cc文件中,允许甚至提倡使用不具名命名空间,以避免运行时的命名冲突:namespace{//命名空间的内容无需缩进enum{UNUSED,EOF,ERROR};bool AtEof(){return pos_ == EOF;}}//namespace然而,与特定类关联的文件作用域声明在该类中被声明为类型,静态数据成员或静态成员函数,而不是不具名命名空间的成员。像上文展示的那样,不具名命名空间结束时用注释//namespace标识。注:不能在.h文件中使用不具名命名空间。2)具名命名空间命名空间将除文件包含,全局标识的声明/定义以及类的前置声明外的整个源文件封装起来,以同其他命名空间相区分。//.h文件namespace mynamespace{class MyClass{public:...void Foo();};}//namespace mynamespace//.cc文件namespace mynamespace{//函数定义都置于命名空间中void MyClass::Foo(){...} }//namespace mynamespace禁止污染命名空间using namespace foo;

c编码规范 篇2

关键词:C语言,软件代码,编码规范

0 引言

在软件开发过程中, 代码的质量直接影响软件产品的质量。一个合格的软件工程师的任务就是要在预定的时间和进度下交付高质量的软件产品。现在, 软件系统的规模越来越大, 复杂程度越来越高, 软件的质量也越来越重要。由于软件开发是一个思考过程, 开发人员的编程习惯和思维方式直接影响到软件产品的质量。所以在20世纪60年代才会爆发软件危机。而且人们也渐渐认识到, 在软件开发过程中, 编码不规范的积累与放大效应是导致软件危机最主要的原因。本文尝试对C语言编码规范做了个探讨。

1 排版

版式虽然不会影响程序的功能, 但会影响可读性。程序的版式追求清晰、美观, 是程序风格的重要构成因素。可以把程序的版式比喻为“书法”。好的“书法”可让人对程序一目了然, 看得兴致勃勃。差的程序“书法”如螃蟹爬行, 让人看得索然无味, 更令维护者烦恼有加。

1.1 缩进

程序块采用缩进风格编写, 缩进为4个空格位。排版不混合使用空格和TAB键。

1.2 空格

(1) 函数名之后不要留空格, 紧跟左括号‘ (’。

(2) ‘ (’向后紧跟, ‘) ’、‘, ’、‘;’向前紧跟, 紧跟处不留空格。

(3) ‘, ’之后要留空格, 如Function (int x, int y, int z) 。如果‘;’不是一行的结束符号, 其后要留空格, 如for (initialization; condition; update) 。

(4) 一元操作符如“!”、“~”、“++”、 “&” (地址运算符) 等前后不加空格。

(5) 赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符, 如“=”、“+=” “>=”、“<=”、“+”、“*”、“%”、“&&”、“‖”、“<<”, “^”等二元操作符的前后应当加空格。

(6) 象“[]”、“.”、“->”这类操作符前后不加空格。

1.3 空行

(1) 在每个类声明之后、每个函数定义结束之后都要加空行。

(2) 在一个函数体内, 逻辑上密切相关的语句之间不加空行, 其它地方应加空行分隔。

1.4 代码行

(1) 一行代码只做一件事情, 如只定义一个变量, 或只写一条语句。这样的代码容易阅读, 并且便于写注释。如不好的风格:int width, height, depth; // 宽度高度深度。

(2) if、for、while、do 等语句自占一行, 执行语句不得紧跟其后。不论执行语句有多少都要加{}。这样可以防止书写失误。

1.5 对齐

(1) 程序的分界符‘{’和‘}’应独占一行并且位于同一列, 同时与引用它们的语句左对齐。

(2) { }之内的代码块在‘{’右边数格处左对齐。

1.6 长行拆分

长表达式要在低优先级操作符处拆分成新行, 操作符放在新行之首 (以便突出操作符) 。拆分出的新行要进行适当的缩进, 使排版整齐, 语句可读。

参考文献

[1]谭浩强.C程序设计[M].北京:清华大学出版社, 2006.

C语言命名规范10条 篇3

从事C语言的教学也有两年了,在教学中发现学生们在编程方面有一个极不好的习惯,就是随意命名,这不仅给自己日后阅读自己程序时带来不便,也给其他的程序阅读者带来麻烦,更重要的是没有统一的规范总显得像是个游击队,没有正规军的感觉,企业也不愿意要业余选手,所以C语言的初学者最好一开始就培养一种良好的编程习惯,也许日后进入公司有些改动,需要适应,但基本的规范和规则是不需要改的,这样可以帮助你少走很多弯路,经过这些年的学习和工作,总结了一些规范的内容,为了好记,便于传播,特总结为十条,建议读者采纳。1)标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。程序中的英文单词一般不会太复杂,用词应当准确。例如不要把CurrentValue写成NowValue。

2)不允许使用汉语拼音命名,更不要使用汉语,必须使用英文来命名标识符。尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。

3)函数名、变量名从第二个单词起首字母大写。如:printName(), oldName等

4)在C 程序中只使用const常量而不使用宏常量,即const常量完全取代宏常量。常量定义以大写字母K开头,字母全部使用大写,如:const int KSIZE = 100。

5)代码缩进使用4个空格,不推荐使用TAB键

6)版权和版本的声明位于文件的开头;函数头部应进行注释,列出:函数的功能、输入参数、输出参数、返回值等。关键代码注释位于被注释代码上方,且用空行与其他代码分割开,如:

文件头注释:

author: SDL team

function: testing hardware drivers and IDE

date: 2009.10

copy right: Software College Of HeBei Normal University

函数注释:

function:SDL initial

parameter: none

return: bool

true:initial SDL normally

false:initial SDL abnormally

关键代码注释:

pTemp = SDL_LoadBMP(aFileName);

//format BMP file

*aImg = SDL_DisplayFormat(pTemp);

SDL_FreeSurface(pTemp);

7)静态变量加前缀s_,如:staticints_count = 0;

8)尽量避免应用全局变量,如果有特殊情况必须定义的话,全局变量以小写g_开头,如:intg_count = 0;

9)结构体的名字开头字母要大写。如: struct Student

{

};

c编码规范 篇4

关键词:云南规范彝文,形码编码,输入法,字库

经过20多年的发展,我国已经在少数民族语言文字信息交换和处理领域取得了快速发展,其中藏、蒙、维、彝、朝5种民族文字领域更是硕果累累,不仅正式进入国际标准化组织(ISO)统一编码的国际标准,而且在输入法实现方面技术基本成熟。这对于少数民族语言文字信息的保护有着重要的现实意义。

实现一个完整的输入法,最重要的是文字字库的设计和制作,而核心内容便是字符集编码方案的选择和设计。这两项是决定一个输入法性能优良与否的关键。本文以云南规范彝文为研究对象,完成了云南规范彝文字库的设计和制作,并设计一套切实可行的规范彝文字符集的编码方案。

1 云南规范彝文字库的设计

字库是外文字体、中文字体以及相关字符的电子文字字体集合库,被广泛用于计算机、互联网及相关电子产品上。字库的设计是一件复杂庞大的工程,一套完整的字库在面市前要经过多个流程才能完成,其中涉及到诸多知识点,例如字稿的选择、扫描、数字化拟合,以及对字库的修改和整合[1]。

1.1 字库设计及数字化拟合字库

本文使用的是目前比较流行的数字化字形描述技术——TrueType,其中Font Creator Program软件设计并制作有3 751个彝文字的云南规范彝文字库。通过Font Creator Program实现修改字体、写入字体版权信息、控制字体属性等。

前期对手稿的处理十分关键,字库的正确性、美观与否都取决于对手稿的数字化,可以选择扫描的方式将手稿数字化。将手稿图像导入Font Creator Program中,如图1所示。

数字化拟合是利用专门程序按照一定的数学算法,自动将扫描后的点阵图像拟合成尽可能接近原告的数字化信息,即二次B样条曲线及直线。数字化拟合是很重要的一步,如果拟合准确,可以大幅提高修改字体的工作效率。

在导入字模图像的同时要对相应的参数进行设定。需要注意的是,导入的字模图像不能过大,应尽量低于100 kB。因为较大的图片会导致载入字模图片时间延长,降低效率。根据云南规范彝文字形的特征,经过计算在以200×200范围的点阵字模,比较适合彝文字模图像[2],如图2所示。

1.2 修改云南规范彝文字体

虽然计算机拟合效率较高,但数字化拟合只是完成了最初步的工作,若要提高字体质量,使制作的字库中的字体美观实用,还要靠人工修改才能完成。首先修字的工作量非常大,云南规范彝文字库共有3 751个彝文字。修字主要是通过编辑节点对字形进行编辑,保证每一个笔画要用最少的点描述,以尽可能地减少存储信息,提高还原速度。同时不仅要将字体控制在200×200的范围内,还要兼顾云南规范彝文的字形特征,尽量使其美观。

1.3 整合云南规范彝文字库

当编译完全部字符后需要对字体进行验证,可以得到验证报告,如图3所示,然后根据验证报告上的信息对有问题的字符进行相应调整。最后便可得到美观实用的云南规范彝文字库,现截取部分字库文件图片,如图4所示。

2 云南规范彝文字符集编码的设计

2.1 编码标准

我国现已颁布并实施的国际、国家标准有[3]:

(1)《信息交换用彝文编码字符集》(G86032),该标准根据1980年国务院颁布实施的规范彝文制定,共计1 165个彝文字符,主要起草人:沙玛拉毅。

(2)《信息交换用彝文15×16点阵字模集及数据集》,1992年该项标准由国家标准出版社出版、国家技术监督局颁布实施,主要起草人:沙玛拉毅。

(3)《信息交换用彝文24×24点阵字模及数据集》,该项标准于1997年由国家技术监督局发布,主要起草人:沙玛拉毅。

2.2 云南规范彝文编码设计思路

字库的编码是字库组织的依据,是文字处理的基础。现有彝文字库的编码多是采用国际音标形式对彝文字进行编码,但使用该方法进行编码有很大的局限性,即采用这种编码设计方案的输入法所面向的使用对象是熟悉彝文并掌握彝文字标准发音的群体。这也就阻碍了这种编码方式的使用和推广。基于上述原因,本文采用了形码的编码方式,无论是否熟知彝文字,亦或是第一次使用彝文字的用户都可以输出彝文字。

2.3 云南规范彝文字符集外码编码的实现

从信息论的角度对于信源进行编码,可以选择定长编码或者变长编码,虽然变长编码可以提高编码效率,在节省了时间的同时却牺牲了存储空间,存储这些变长码需要大量缓冲设备,如果出现了误码,容易引起错误扩散;定长编码在冗余度压缩编码中比变长编码占有一定优势,而且本文采用的全数字定长编码不仅容易发现手动输入错误,在键盘键入过程中也有利于提高输入效率。

彝文字的符号体系与汉字有明显的区别,尽管文字的使用频率和规范程度远不及汉文,但从彝文字结构本身来说自有其特色。首先,彝文字强调笔画简单,一般3~4画的居多;其次,彝文字的书写程序是强调从上至下、从左至右平向流线型的,文字整体符合书写规律;最后,彝文字的书写强调笔画的流畅,弧线的圆润和优美。因为彝文字具有以上特点,本文采用了一种基于笔画的编码方案。对待处理的文字,进行了外码的编辑。

2.3.1 对彝文字进行拆分

与汉字相似,首先确定该彝文字的结构,一般可分为上下结构、左右结构、包围结构。确定结构类型的标准主要是使拆分后的两部分结构占字面积相似,或是重心平衡。然后确定主要部首,规则是从左到右、从上到下、从外到内。如图5所示。

2.3.2 确定主要部首的组成笔画数

具体方法是将所有的彝文字都看作是直线与弧线组成的集合,每一个独立的直线和圆滑曲线算作为一笔,其他的折线都要拆分成独立的直线跟圆滑曲线来计算笔画数,直线上的交叉点不作为拆分点进行拆分。如图5中的彝文字的主要部首由两条圆滑曲线组成,即为两笔。笔画数则为2。

2.3.3 确定封闭区间的个数

封闭区间可以是由直线、圆滑曲线、折线所构成的独立区间,计算封闭区间个数时,以独立的最小封闭区间为准,即各个封闭区间的关系为相互独立,不存在包含于、相交于的关系。例如,图5所示的彝文字的独立最小封闭区间数为4。

图6中的彝文字为左右结构,其中主要部首由一条圆滑曲线构成,即为1笔,部首的笔画数则为1,封闭区间只有1个,则部首的独立最小封闭区间数为1;剩余部分由3条独立直线构成,即为3笔,画数则为3,没有封闭区间,独立最小封闭区间数则为0。

但整个彝文字体的封闭区间应按最小独立的封闭区间算,右边的剩余部分将左边的部首中的封闭区间划分为了3个小的独立的封闭区间,并和它产生了一个封闭区间,这样该彝文字一共有4个最小封闭区间。

2.3.4 确定结点个数

结点个数即为整个彝文字体中的交叉点的个数,如图4中的彝文字的结点个数为2,图5中的彝文字的结点个数为6。若结点个数为多为两位整数,如18个结点个数,则取这个两位数的个位进行编码,即外码编码即为8。

2.3.5 外码的编码原则

本文设计彝文字的外码由5个码组成,第1位码为主要部首的笔画数,第2位码是主要部首的独立的最小封闭区间的个数,第3位码是除主要部首以外剩余笔画数,第4位是整个彝文字的独立的最小封闭区间的个数,第5位是整个彝文字的结点个数。具体编码如图7,图8所示。

2.4 云南规范彝文字符集码表的制作

考虑到规范彝文字符编码时所占编码区域的大小,以及云南规范彝文输入系统与中英文输入系统、其它彝文输入系统的兼容性,本文采用了国际上的主流Unicode编码技术,它是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。其中E000~F8FF为自行使用区域(Private Use Zone),可存放6 400个字符,本文的云南规范彝文字符可全部存放在该用户自定义编码区域。制作生成的Unicode码表文件如图9所示。

2.5 输入法的实现

本文采用一种Windows系统实现文字输入功能的标准方法Windows IME API 即“IMM-IME”输入法生成器来实现云南规范彝文的输入,因为该IMM-IME结构在Win32平台下所提供的输入环境不仅系统稳定性较高,而且是一种方便、规范的方式[5]。

云南规范彝文输入法安装成功后,在Windows中的Microsoft Word 2003中,输入了传统彝文叙事歌《阿诗玛》的最后一句“说的说来听得听”,并且可与中文兼容共同显示,效果如图10所示。

3 性能分析

国家标准对键盘输入系统的性能评价主要有两个层次,一个是编码层次,一个是软件层次。在编码层次上要求达到定性指标,如易学性;在软件层次上要求达到量化指标,如输入的平均码长和重码键选率。因此易学性、平均码长和重码字键选率是衡量一种输入法性能的3个重要指标[4]。

3.1 易学性

本文所设计的云南规范彝文输入法不仅是针对彝文学者的输入法,而是面向所有有彝文输入要求的使用者,即便是不懂彝文的使用者也可以通过简单的学习使用该输入法完成彝文输入。

3.2 彝文输入的平均码长

输入平均码长是指再输入给定的测试样本时,测得的输入每个彝文字的平均击键次数[6]

平均码长=(键/字) (1)

以云南规范彝文字库中随机抽取的1 000个彝文字为输入测试样本,由于本文中使用的为定长编码,其中测试样本击键次数分布如表1所示。

根据式(1)计算

平均码长=10×11+9×21+8×90+7×702+6×1761000(键/字)=6.989(键/字) (2)

3.3 彝文输入的平均码长

重码字键选率是指在输入给定测试样本过程中,通过重码选择确认的彝文字数与测试样本总字数的百分比[6]

重码字键选率=×100%(3)

在输入测试样本时,重码选择确认的彝文字数与测试样本字数分布如表2所示。

根据式(2)计算

重码字键选率=45+30+21+10+12+4+4+3+4+12+61000×100%=15.1%(4)

4 结束语

彝文是一种原生的古老文字,它在古老方面与汉文难分伯仲,却不是借用和摹仿汉字的产物。彝文产生于新石器时代到铁器时代之间,它也和其他民族的古老文字一样经历了一个漫长的发展过程和文字发展的必经阶段,彝文发展到今天已有4 000多年的历史。但是,由于彝文所使用的书写材料的易腐蚀性,加之南方潮湿闷热的气候等,都给彝文文献的保存造成了困难。因此在彝文历史文化研究中,需要收集、整理、保存的彝文文献,迫切需要解决的就是彝文字信息化问题。本文设计和制作的云南规范彝文字库及设计的规范彝文字符集的编码方案,为彝文的信息处理另辟蹊径。

参考文献

[1]吕强,史磊,杨季文.TrueType字体文件格式初探[J].计算机研究与发展,1995,32(11):23-31.

[2]陈顺强,张阳,熊剑.四川古彝文字库设计及其字符集的编码[J].西南民族大学学报:自然科学版,2009,35(4):913-918.

[3]沙马拉毅.计算机彝文信息处理[M].成都:四川民族出版社,2000.

[4]沙马拉毅,钱玉趾.规范彝文编码方案[J].中文信息,1990(3):12-13.

[5]胡宇晓,马少平,夏莹.基于MM-ME输入法接口的实现方法[J].计算机工程与应用,2002,38(1):117-120.

上一篇:描写学校的段落摘抄下一篇:幼儿园小班主题教案《鞋子的聚会》及教学反思