C语言头文件编程规范_第1页
C语言头文件编程规范_第2页
C语言头文件编程规范_第3页
C语言头文件编程规范_第4页
C语言头文件编程规范_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语言头文件编程规范 /*/*/*版权所有 (C)2012, 于林峰(九江学院)/*/*文件名称: 头文件/*文件标识: /*内容摘要: 线性链表的"顺序"表示和实现/*其它说明: /*当前版本: V1.0/*作 者: 于林峰/*完成日期: 2012年07月02日/*-/* 修改记录1:/ 修改历史记录,包括修改日期、修改者及修改内容/* 修改日期:2012年10月02日/* 版 本 号:/* 修 改 人:于林峰/* 修改内容:头文件的包含、函数结果状态码、 /*/* 修改记录2:/*/*/#ifndef_UNIHEADER_H_#define_UNIHEA

2、DER_H_#pragma once#include <ctype.h>#include <io.h>/ eof()#include <iostream.h>#include <limits.h>/ INT_MAX 等#include <malloc.h>/ malloc() 等#include <math.h>/ floor(), ceil(), abs()#include <process.h>/

3、 exit()#include <stdio.h>/ EOF(=Z 或 F6), NULL#include <stdlib.h>/ atoi() 等#include <string.h>/*/* */*标识符命名基本规则(根据中兴公司 C/C+ 编程规范) */* */* - */* */* 1. 标识符要采用英文单词或其组合,便于记忆和阅读 */* 切忌使用汉语拼音来命名。 */* */* 说明:标识符应当直观且可以拼读,可望文知义,避免使人产生误解。 */*程序中的英文单词一般不要太复杂,用词应当准确。 *

4、/* */* 2. 标识符只能由26个英文字母,10个数字,及下划线的一个子集来组成, */* 并严格禁止使用连续的下划线, */* 下划线也不能出现在标识符头或结尾(预编译开关除外)。 */* */* 说明:这样做的目的是为了使程序易读。 */*因为 variable_name 和 variable_name 很难区分, */*下划线符号'_'若出现在标识符头或结尾, */*容易与不带下划线'_'的标识符混淆。 */* */* 3. 标识符的命名应当符合"min-length &&amp

5、; max-information"原则。 */* */* 说明:较短的单词可通过去掉"元音"形成缩写, */*较长的单词可取单词的头几个字母形成缩写, */*一些单词有大家公认的缩写,常用单词 的缩写必须统一。 */*协议中的单词的缩写与协议保持一致。 */*对于某个系统使用的专用缩写应该在某处做统一说明。 */* */* 正例:如下单词的缩写能够被大家认可: */*temp 可缩写为 tmp */*flag 可缩写为 flg */*statistic 可缩写为 stat */*increment 可缩写为 inc */*message

6、可缩写为 msg */* */*规定的常用缩写如下: */*常用词缩写常用词缩写 */*ArgumentArgMaximumMax */*BufferBufMessageMsg */*ClearClrMinimumMin */*lockClkMultiplexMux */*CompareCmpOperating SystemOS */*ConfigurationCfgOverflowOvf */*ContextCtxParameterParam */*DelayDlyPointerPtr */*DeviceDevPreviousPrev */*DisableDisPriorityPrio */

7、*DisplayDispReadRd */*EnableEnReadyRdy */*ErrorErrRegisterReg */*FunctionFnctScheduleSched */*HexadecimalHexSemaphoreSem */*High Priority TaskHPTStackStk */*I/O SystemIOSSynchronizeSync */*InitializeInitTimerTmr */*MailboxMboxTriggerTrig */*ManagerMgrWriteWr */* */* 4. 程序中不要出现仅靠大小写区分的相似的标识符。 */* */

8、/* 5. 尽量避免名字中出现数字编号,如Value1、Value2等,除非逻辑上的确需要编号 */* */* 6. 常用变量类型前缀如下: */* i: intb: BOOL */* f: floath: HANDLE */* d: doublew: unsigned short 或 WORD */* c: chardw: DWORD或 unsigned long */* uc: unsigned char 或 BYTEa: 数组,array of TYPE */* l: longstr: 字符串 */* p: pointert: 结构类型 */* */* 以上前缀可以进一步组合。 */*

9、在进行组合时,数组和指针类型的前缀指示符必须放在变量类型前缀的首位。 */* */* 7. 完整的变量名应由"前缀" + "变量名主体"组成, */* 变量名的主体应当使用"名词"或者"形容词名词",且首字母必须大写。 */* */* 说明:各种前缀字符可能组合使用。在这种情况下,各前缀顺序为: */*变量作用域前缀、变量类型前缀。 */* 正例: */* float g_ fValue; / 类型为浮点数的全局变量 */ /* char *pcOld

10、Char; / 类型为字符指针的局部变量 */* */*/*/* */* 常量 */* */* - */* */* 1. 宏、常量名都要使用大写字母, 用下划线 '_' 分割单词。 */* 预编译开关的定义使用下划线 '_' 开始。 */* */* 正例:如 DISP_BUF_SIZE、MIN_VALUE、MAX_VALUE 等等。 */* */ /*/ 函数结果状态代码#define TRUE 1/ 布尔类型值#define FALSE 0/ 布尔类型值#define OK 1/ 函数类型值函数结果状态代码#define ERR

11、OR 0/ 函数类型值函数结果状态代码#define INFEASIBLE-1/ 函数类型值函数结果状态代码/#define OVERFLOW-2/ 因为在 math.h 中已定义 OVERFLOW 的值为 3,故注释掉此行#define LIST_INIT_SIZE10/ 顺序线性链表存储空间的初始分配量#define LIST_INCREMENT2/ 顺序线性链表存储空间的分配增量/*/* */* 宏定义 */ /*/* - */* */* 1. 宏、常量名都要使用大写字母, 用下划线 '_' 分割单词。 */* 预编译开关的定义使用下划线 &#39

12、;_' 开始。 */* */* 正例:如 DISP_BUF_SIZE、MIN_VALUE、MAX_VALUE 等等。 */* */*/*/* */* 数据类型 */ /* */* - */* */* 1. 结构名、联合名、枚举名由前缀T_ 开头。 */* */* 2. 事件名由前缀EV_ 开头。 */* */* 3. 结构和联合必须被类型化。 */* */* 正例: */*typedef struct */* */*char acNameNAME_SIZE; */*WORD wScore; */* T_Student; */*T_Student *ptStudent; */*

13、*/*/typedef int Status;/ Status 是函数的类型,其值是函数结果状态代码,如 OK 等typedef int Boolean;/ Boolean 是布尔类型,其值是 TRUE 或 FALSE/*/* 定义抽象数据类型 ElemType(元素类型) 在本程序中为整型/* 可以有如下抽象数据类型 /* ElemType 是元素类型;SElemType 是堆栈元素类型/*QElemType 是队列元素类型;TElemType 是树元素类型*/typedef int ElemType;/*/* 定义抽象数据类型 ElemType(元素类型) 在本程序中为双精度型/* 注意与

14、 main() 中的内容呼应/* 若 typedef char Elemtype; 时,对不同长度的字符串该如何处理?本数据结构不再适用?*/ typedef double Elemtype;/*/* 给顺序线性链表加"注释"用的"标记性"结构体:/* 链表存放始于何处?链表中当前有几个元素?链表最多能存放几个元素?*/typedef struct ElemType *piElem;/ 链表空间基地址ElemType iLength;/ 链表当前长度ElemType iListSize;/ 给链表分配的当前存储空间(以 s

15、izeof(ElemType) 为单位) T_SeqList;/ T_SeqList = Sequential List Structure:顺序线性链表结构体类型/*/* */* 类声明 */ /* */* - */* */* 1. 类名采用大小写结合的方法。 */* 在构成类名的单词之间不用下划线, */* 类名在开头加上C,类的成员变量统一在前面加m_ 前缀。 */* */* 说明:C+Builder中的类名在开头加T。 */* */* 正例: */*void Object:SetValue(int iWidth, int iHeight) */* */*m_iWidth = iWidt

16、h; */*m_iHeight = iHeight; */* */ /* */*/*/* */* 模板 */ /* */*/*/* */* 全局变量声明 */* */ /*/ /*/* */* 局部函数原型 */ /* */* - */* */* 1. 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。 */* */* 说明:下面是一些在软件中常用的反义词组。 */*add/remove;begin/end;create/destroy;insert/delete */*first/last;get/release;increment/decrement;put/get */*add/

17、delete;lock/unlock;open/close;min/max */*old/new;start/stop;next/previous;source/target */*show/hide;send/receive;source/destination;cut/paste */*up/down */* */* 2. 函数名用大写字母开头的单词组合而成, */* 且应当使用"动词"或者"动词名词"(动宾词组)。 */* */* 说明:函数名力求清晰、明了,通过函数名就能够判断函数的主要功能。 */*函数名中不同意

18、义字段之间不要用下划线连接, */*而要把每个字段的首字母大写以示区分。 */*函数命名采用大小写字母结合的形式,但专有名词不受限制。 */* */*/ (01)创:创建一个空的线性表Status InitList(T_SeqList *t_pSList);/ t_SList = Sequential List Variant:/ 结构体型顺序线性链表变量/ (02)销:销毁线性表Status DestroyList(T_SeqList *t_pSList);/ (03)清:清空线性表Status ClearList(T_SeqList *t_pSList);/ (04)空:判断线性表是否为空

19、Status IsListEmpty(T_SeqList t_SList);/ (05)数:返回线性表中元素的个数Status ListLength(T_SeqList t_SList);/ (06)值:返回线性表中某个元素的值Status GetElem(T_SeqList t_SList, int i, ElemType *iElem);/ (07)位:返回线性表中第1个满足某种关系的元素的位序Status LocateElem(T_SeqList t_SList, ElemType iElem, Status (*PolymorphizateLocate)(ElemType, ElemType);/ (08)前:返回线性表中某个元素的前驱元素Status PriorElem(T_SeqList t_SList, ElemType iCurElem, ElemType *piPreElem);/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论