嵌入式C语言编程规范--排版与格式(个人规约)

原创 2018年04月16日 18:25:20

1、相对独立的程序块之间、变量说明之后必须加空行;

if (!valid_ni(ni))
{
    // program code
    ...
}

//空行

repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;

2、在switch语句中,每一个case分支和default要用{}括起来,{}中的内容需要缩进。

正例:

switch(iCode)

{

    case1:

    {

        DoSomething();//缩进4格
        break;

    }

    case2:

    {    //每一个case分支和default要用{}括起来

        DoOtherThing();

        break;

    }

}

3、一元操作符如“!”、“~”、“++”、“--”、“*”、“&”(地址运算符)等前后不加空格。“[]”、“.”、“->”这类操作符前后不加空格

!bValue
~iValue
++iCount
*strSource
&fSum
aiNumber[i]=5;
tBox.dWidth
tBox->dWidth

4、多元运算符和它们的操作数之间至少需要一个空格

正例:
fValue = fOldValue;
fTotal + fValue
iNumber += 2;

5、关键字之后要留空格

说明:if、for、while等关键字之后应留一个空格再跟左括号‘(’,以突出关键字

6、函数名之后不要留空格

说明:函数名后紧跟左括号‘(’,以与关键字区别。

7、‘(’向后紧跟,‘)’、‘,’、‘;’向前紧跟,紧跟处不留空格。‘,’之后要留空格。‘;’不是行结束符号时其后要留空格。

8、注释符与注释内容之间要用一个空格进行分隔

/* 注释内容 */
// 注释内容

9、相关的赋值语句等号对齐

正例:
tPDBRes.wHead    = 0;
tPDBRes.wTail    = wMaxNumOfPDB-1;
tPDBRes.wFree    = wMaxNumOfPDB;
tPDBRes.wAddress = wPDBAddr;
tPDBRes.wSize    = wPDBSize;

10、程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。{}之内的代码块使用缩进规则对齐;

说明:这样使代码便于阅读,并且方便注释。

do while语句和结构的类型化时可以例外,while条件和结构名可与 } 在同一行;

void Function(uint_8 ucVar)
{//独占一行并与引用语句左对齐
  while(condition)
  {
    DoSomething();
  }
}

11、if、else、elseif、for、while、do等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{};

说明:防止书写失误,也易于阅读。

if (v1 < v2)
{
  v1 = v2;
}

12、长表达式(超过80列)要在低优先级操作符处拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要进行适当的缩进,使排版整齐;

说明:条件表达式的续行在第一个条件处对齐。

for循环语句的续行在初始化条件语句处对齐。函数调用和函数声明的续行在第一个参数处对齐。赋值语句的续行应在赋值号处对齐。

if ((iFormat == CH_A_Format_M) && 
   (iOfficeType == CH_BSC_M) &&
   (aaaaa < bbbb))//条件表达式的续行在第一个条件处对齐
{
    DoSomething();
}

    for (long_initialization_statement;
        long_condiction_statement;//for循环语句续行在初始化条件语句处对齐
        long_update_statement)
    {
      DoSomething();
    }

//函数声明的续行在第一个参数处对齐
BYTEReportStatusCheckPara(HWNDhWnd,
                          BYTEucCallNo,
                          BYTEucStatusReportNo);

//赋值语句的续行应在赋值号处对齐
fTotalBill = fTotalBill+faCustomerPurchases[iID]
           + fSalesTax(faCustomerPurchases[iID]);

13、函数声明时,类型与名称不允许分行书写

  extern double FAR CalcArea(double dWidth, double
dHeight);
14、文件头部必须进行注释

说明:注释必须列出:版权信息、文件标识、内容摘要、版本号、作者、完成日期、修改信息等。

下面是文件头部的中文注释:

    /*********************************************************************

    *版权所有(C)2001,XXX股份有限公司。*

    *文件名称://文件名

    *文件标识://见配置管理计划书

    *内容摘要://简要描述本文件的内容,包括主要模块、函数及其功能的说明

    *其它说明://其它内容的说明*当前版本://输入当前版本*作者://输入作者名字及单位

    *完成日期://输入完成日期,例:2000年2月25日

    *修改记录1://修改历史记录,包括修改日期、修改者及修改内容

    *修改日期:*版本号:*修改人:*

    修改内容:*修改记录2:…

    **********************************************************************/

    下面是文件头部的英文注释:

    /***********************************************************************

    *Copyright(C)2011,XXXXXCorporation.*

    *FileName://文件名(注释对齐)*FileMark://见配置管理计划书

    *Description://简要描述本文件的内容,完成的主要功能

    *Others://其它内容的说明*Version://输入当前版本*Author://输入作者名字及单位

    *Date://输入完成日期,例:2001-12-12

    *History1://修改历史记录,包括修改日期、 修改者及修改内容

    *Date:*Version:*Author:*

    Modification:*History2:…

**********************************************************************/

15、函数头部应进行注释,列出:函数的目的/功能、输入参数输出参数、返回值、访问和修改的表、修改信息等。

说明:注释必须列出:函数名称、功能描述、输入参数、输出参数、返回值、修改信息等

下面是函数头部的中文注释:

/**********************************************************************

*函数名称://函数名称

*功能描述://函数功能、性能等的描述

*访问的表://(可选)被访问的表,此项仅对于有数据库操作的程序

*修改的表://(可选)被修改的表,此项仅对于有数据库操作的程序

*输入参数://输入参数说明,包括每个参数的作用、取值说明及参数间关系

*输出参数://对输出参数的说明。

*返回值://函数返回值的说明

*其它说明://其它说明

*修改日期版本号  修改人  修改内容

*-----------------------------------------------

*2002/08/01  V1.0  XXXX

***********************************************************************/

下面是函数头部的英文注释:

/**********************************************************************

*Function://函数名称(注释对齐)

*Description://函数功能、性能等的描述

*TableAccessed://(可选)被访问的表,此项仅对于有数据库操作的程序

*TableUpdated://(可选)被修改的表,此项仅对于有数据库操作的程序

*Input://输入参数说明,包括每个参数的作用、取值说明以及参数间关系

*Output://对输出参数的说明*Return://函数返回值的说明

*Others://其它说明

*ModifyDateVersion  Author  Modification
*-----------------------------------------------

*2002/08/01  V1.0  XXXX

**********************************************************************/

16、包含在{}中代码块的结束处应加注释,便于阅读。特别是多分支、多重嵌套的条件语句或循环语句;

17、在表达式中使用括号,使表达式的运算顺序更清晰

if (((iYear%4==0) && (iYear % 100 != 0)) || (iYear % 400 == 0))

18、在条件判断语句中,当整型变量与0比较时,不可模仿布尔变量的风格,应当将整型变量用“==”或“!=”直接与0比较;

19、应当将指针变量用“==”或“!=”与NULL比较;

说明:指针变量的零值是“空”(记为NULL),即使NULL的值与0相同,但是两者意义不同

20、在switch语句中,每一个case分支必须使用break结尾,最后一个分支必须是default分支

说明:避免漏掉break语句造成程序错误。同时保持程序简洁。

对于多个分支相同处理的情况可以共用一个break,但是要用注释加以说明。

版权声明:本文为博主原创文章,博主允许 可以转载。 https://blog.csdn.net/qq_39815416/article/details/79963114

嵌入式C语言编程规范(个人规约)

0规范制定说明 0.1箴言 技术人员设计程序的首要目的是用于技术人员沟通和交流,其次才是用于控制CPU的。程序的生命力在于用户使用,程序的成长在于后期的维护及根据用户需求更新和升级功能。如果你的程序只...
  • zhanglianpin
  • zhanglianpin
  • 2015-06-18 09:51:38
  • 5966

编程规范 --- 排版

1-1:程序块要采用缩进风格编写,缩进的空格数为4个。 说明:对于由开发工具自动生成的代码可以有不一致。 1-2:相对独立的程序块之间、变量说明之后必须加空行。 示例:如下例子不符合规范。 i...
  • XiaoXiaoPengBo
  • XiaoXiaoPengBo
  • 2016-06-04 11:35:47
  • 1948

嵌入式软件c编程规范

  • 2012年07月21日 17:56
  • 1.48MB
  • 下载

嵌入式C语言编程规范--函数(个人规约)

函数设计的精髓:整洁,同时把代码有效组织起来。整洁要求:代码简单直接、不隐藏设计者的意图、用干净利落的抽象和直截了当的控制语句将功能实现。代码的有效组织包括:逻辑层组织和物理层组织两个方面。逻辑层,主...
  • qq_39815416
  • qq_39815416
  • 2018-04-16 16:48:05
  • 16

嵌入式C语言编程规范--命名规则(个人规约)

通用命名规则:标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解1. 移植代码和修改部分代码时,保持原命名风格;2. 目录名、文件名、函数文件名、函数参...
  • qq_39815416
  • qq_39815416
  • 2018-04-16 11:18:26
  • 6

(一)阿里巴巴JAVA编程规范之编程规约

(一) 命名规约 1. 【强制】所有编程相关命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例: _name / __name / $Object / name_ / name...
  • qq_19701185
  • qq_19701185
  • 2017-02-13 21:20:18
  • 2306

阿里巴巴编程规范之编程规约

(一) 命名规约 1. 【强制】所有编程相关命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 反例: _name / __name / $Object / name_ / ...
  • LuoJun_
  • LuoJun_
  • 2017-08-11 09:26:19
  • 327

linux下C编程规范

这是一篇用来描述 linux 内核的首选编码样式的短文档。每个人都有自己的编码风格,我不会 将我的观点强加到任何人的身上,但这正是我所要保持的东西,就像其他许多事情一样。至少请考虑在这里所列出的观点。...
  • lee244868149
  • lee244868149
  • 2014-08-13 16:53:29
  • 1344

编写优质嵌入式C程序

前言:这是一年前我为公司内部写的一个文档,旨在向刚踏入嵌入式编程的年轻工程师们介绍如何在裸机环境下编写优质嵌入式C程序。本文通过一些我遇到的、同事遇到的或者一些前人遇到的典型案例来分析嵌入式C中的一些...
  • zhzht19861011
  • zhzht19861011
  • 2015-05-05 21:26:30
  • 34158

前端代码编码和设计规范系列——JavaScript编程规范

良好的编程规范对于软件的开发与维护,至关重要!他不仅可以提高代码的可读性、可靠性、有效性、健壮性,而且利于帮助开发人员开发和维护代码。对于一个团队协作的项目来说,人员的变动,一个良好的编程规范,有助于...
  • caogenxie
  • caogenxie
  • 2016-07-15 15:43:19
  • 2350
收藏助手
不良信息举报
您举报文章:嵌入式C语言编程规范--排版与格式(个人规约)
举报原因:
原因补充:

(最多只允许输入30个字)