237.C语言代码规范.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
237.C语言代码规范

目录一.与平台或者编译器有关的准则1二.与命名有关的准则2三.程序的版式3四.表达式和基本语句6五.函数设计8版本修改历史版本作者/修改人修改时间修改内容V 0.01庞军2011/10/19起草C语言代码规范与平台或者编译器有关的准则在变量申明时,不要用非常量初始化数组。并不是所有的编译器都支持用变量初始化数组。// 不要使用这种风格int fun(int iSize){ int array[iSize];}不要使用0长度的数组。并不是所有的编译器都支持0长度的数组。不要在代码中间定义变量,在函数开始处申明变量。并不是所有的编译器都支持在代码中定义变量。不要使用匿名的union。并不是所有的编译器都支持匿名的union。typedef struct foo {int foo;union {int foo_l;float foo_s;} u; /* have a name here */} foo_t;不要使用uchar, u_char, ushort, u_short, uint, u_int,ulong, u_long, boolean等类型。这些类型并不是标准的C语言类型。不要把 long 类型等同于signed 64-bit整形,不要把 unsigned long 类型等同于 unsigned 64 –bit 整形。Long类型的大小与平台有关,在32位平台上 long 是32位的。不要使用非ASCII字符写代码。不要使用bzero(), bcopy(),bcmp()等函数,这些函数已经被标明为过时的,在以后的C库中可能不在支持以上函数。应该使用”memset()”, “memcpy()”, “memmove()”, “memcmp()”在多线程环境下,不要使用不是线程安全的函数。例如,在linux下,不要使用”ctime()”, “gmtime()”, “localtime()”等函数,而应该使用“ctime_r()”, “gmtime_r()”, “localtime_r()”函数线程安全的函数。不要使用strcpy(), strcmp(),sprintf()等函数,这些函数会带来安全隐患,很多缓冲区溢出攻击都是利用这些函数的漏洞。应该使用”strncpy()”, “strncmp()”, “snprintf()”不要在栈空间中分配大量内存,应该使用动态内存。因为栈空间是有限的,但动态内存相对栈空间来说是无限的。不设计递归函数。因为递归函数容易耗尽栈空间。不要在函数中返回指向栈空间的指针。在函数返回时栈空间会被释放,指向栈空间的指针将变成非法指针。void *foo(){char buf[1024];…return buff;}将编译器的警告级别调到最高。很多BUG是由这些警告引起的。与命名有关的准则标识符最好采用英文单词或其组合。标识符不能使用中文字符。标识符的长度应当符合”min-length max-information”的原则。代码中不要出现标识符完全相同的局部变量和全局变量。函数名应当使用“动词”或者“动词+名词”的组合,并且首单词小写,其他单词的首字母要大写。变量名应当使用“名词”或者“形容词+名词”的组合,并且变量要以类型的缩写开始,其他单词的首字母大写。类型说明缩写例子int整型iiValueshort短整型ssValuechar字符ccValuefloat浮点ffValuedouble双精度浮点ddValuelong长整型liValueunsigned int无符号整型uiuiValueunsigned short无符号短整型ususValueunsigned char无符号字符ucucValueunsigned long无符号长整型uiuiValueint *整型指针pipiValuechar *字符指针ppValuechar []字符数组szszValuevoid (*pfn) ()函数指针pfnpfnGetValue用正确的反义词组命名具有互斥意义的变量或相反动作的函数。int iMinValue;int iMaxValue;int getValue();void setValue(int iValue);类型名以大写字母开头的字词组合而成。struct MeterInfo{…};enum MeterType{…};常量全用大写的字母命名,并用下划线分割单词。#define MAX_LENGTH (100)静态变量加前缀“s_”(表示 static)。全局变量加前缀“g_”(表示 global)。static int s_iCounter;int g_iMeterNum;程序的版式将代码编辑器设置成用 4 个空格代替tab将编辑器的缩进设置成4个空格在每个函数定义结束之后

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档