当前位置: 首页 > article >正文

【C语言】C语言代码的编写规范、注释规范

【C语言】C语言代码规范


文章目录

    • @[TOC](文章目录)
  • 前言
  • 一、编写规范
    • a、MISRA-C
      • 1、背景与目的
      • 2、发展历程
      • 3、准则内容
      • 4、应用与优势
    • b、华为
  • 二、注释规范
    • 1.文件头注释
    • 2.函数头注释
    • 3.代码行注释
    • 4.特殊注释
  • 三、参考资料
  • 总结

前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、编写规范

a、MISRA-C

MISRA-C工业标准的C编程规范(中文版).pdf
MISRA-C是由汽车工业软件可靠性协会(Motor Industry Software Reliability Association,MISRA)制定的一套针对C语言的编码准则,以下是对MISRA-C的详细介绍:

1、背景与目的

背景:MISRA最初为汽车行业开发了这些规范,用于提升汽车制造业中嵌入式代码的安全性、可靠性。
目的:减少代码中的错误,提高代码的可读性、可维护性和可靠性,确保代码在不同的编译器和平台上的可移植性。

2、发展历程

MISRA先后发布了三版编码准则,分别是MISRA C:1998、MISRA C:2004和MISRA C:2012。其中,MISRA C:2012(第三版,第一次修订版)发布于2019年2月,整合了此前发布的AMD1(修订案1,MISRA C:2012的附加安全准则)和TC1(技术更正1)的内容,并后续经过修订。

3、准则内容

MISRA-C规范包含了一系列关于C语言编码的规则和指导,这些规则旨在规范诸如类型转换、指针使用、内存分配、代码风格等方面的编程实践。

MISRA C:2012规定了一个C语言的子集,共有175条编码准则(guideline),分为指令(directive)和规则(rule)两部分:

指令:共17项,不具备完整描述,仅分析源代码无法进行合规性判定,需要结合设计文档或开发人员经验综合判定。指令均为不可判定。
规则:共158条,具备完整的描述和要求,无需额外的信息就可以对源代码进行合规性判定。规则分为可判定或不可判定。
此外,准则有三种分类,分别是Mandatory(强制性准则,绝对不允许违反)、Required(要求性准则,只有符合MISRA对偏差的要求时才允许违反)和Advisory(建议性准则,只需在合理的范围内遵循,无需符合正式偏差,若不遵循应做好记录)。准则的作用域分为“单一翻译单元”和“系统”。

4、应用与优势

应用领域:虽然MISRA-C最初是为汽车行业设计的,但现已成为其他行业(如航空航天、医疗设备和铁路系统)的编码标准。
优势:遵循MISRA-C规范可以降低软件缺陷的风险,提升代码的可靠性、可读性、可移植性和可维护性。同时,它还有助于预防缺陷的产生,减少因软件问题而导致的召回和损失。

b、华为

华为C语言编程规范 PDF

二、注释规范

1.文件头注释

/*
* File: example.c
* Author: Abin
* Date: 2023-03-01
* Description: This file contains an example of C code.
* Version: 1.0
*/

2.函数头注释

/*
* Function: add
* Description: Adds two integers and returns the result.
* Input: a - the first integer
*        b - the second integer
* Output: None
* Returns: The sum of a and b
*/
int add(int a, int b) {
    return a + b;
}

3.代码行注释

int i = 0; // initialize i to zero

4.特殊注释

// TODO: implement this function
int foo() {
    // FIXME: this code causes a memory leak
    return 0;
}

三、参考资料

C代码的注释规范
C语言编写规范之注释
C 语言编码规范(MISRA-C-:2004)
C语言 - MISRA代码规范
C语言代码注释规范

C代码风格及注释(个人规范)

总结

本文仅仅简单介绍了【C语言】C语言代码规范,评论区欢迎讨论。


http://www.kler.cn/a/403176.html

相关文章:

  • RocketMQ: 专业术语以及相关问题解决
  • WordPress添加类似说说、微博的时间轴微语页面
  • Android 分区相关介绍
  • 区块链网络示意图;Aura共识和Grandpa共识(BFT共识)
  • 【加入默语老师的私域】C#面试题
  • 游戏行业趋势:“AI、出海、IP”大热下,如何提升竞争力?
  • 数据结构的两大要素
  • 【监控】如何打开笔记本的电脑调出摄像头将画面保存下来
  • 华为Ensp模拟器配置OSPF路由协议
  • AI 一键生成 POD 素材:手绘风格圣诞元素印花图案分享
  • 春意盎然:基于Spring Boot的中药实验管理平台
  • 1. 使用Python和TensorFlow进行深度学习入门教程,学习如何搭建神经网络并训练模型。
  • 基于Vue+SpringBoot的求职招聘平台
  • Nacos实现IP动态黑白名单过滤
  • Java基础知识(五)
  • 如何使用AWS Lambda构建一个云端工具(超详细)
  • 大数据挖掘期末复习
  • 对第一个C++程序的解析(C++入门)(hello world)
  • 【Node.js】深入理解 V8 JavaScript 引擎
  • 捕捉页面的关键元素:用CSS选择器与Puppeteer自动抓取
  • Linux 查看磁盘空间使用情况
  • LeetCode93:复原IP地址
  • 【第八课】Rust中的函数与方法
  • 51c扩散模型~合集2
  • TypeScript进阶(一):变量及函数定义
  • 每日论文23-24ESSERC 6.4-16.1Ghz混合并联-串联谐振器