全部学习汇总: https://github.com/GreyZhang/misra_c_hacking

16.1, 函数的参数数目不能是可变的,这个我在工作中其实是遇到很多可变的设计,自然,遇到的基本都是不符合规范的了。

16.2, 函数不能够直接或者间接调用自己。这一条的主要目的是为了避免出现递归,最终导致堆栈空间使用问题。当然,针对递归的使用这里是一刀切了,直接不能用,即使是存储不会增长的尾递归也不允许使用。

16.3, 函数的参数必须要有名字。关于这一条,说起来还是很有意思的。我曾经为了让别人不容易看懂我的代码而故意不这么做,那时候我还是一个少年。

16.4, 函数定义以及声明的标识符必须对等。

16.5, 没有参数的函数在定义或者声明的时候参数中必须写一个void。我遇到很多有人省略void,其实省略掉之后意味着函数的参数可以是任意多个,这也与前面的可变数目的规则有一定的不符。

16.6, 传递给函数的参数数目必须与定义或者声明时候的数目相同。

16.7, 这个规则主要是用于C语言的,但是我在读C++的教程《think c++》的时候接触到了一个概念。函数的分类有三种:纯函数、修改器、模板(fill-in)。这里提到的功能描述其实是对于纯函数要求的。来到C,如果纯函数中的参数是指针类型,那么应该加一个const防止错误修改。

16.8, 带有非空返回值的函数退出路径必须是一个明确的return。

16.9, 函数标识符在使用的时候,要么用&来取地址,要么执行一次完整的函数调用。

16.10, 如果函数有错误码返回,那么应该看一下是否有错误报出。

这几条关于函数设计的规则都比较简单也比较容易理解,不过看了一遍之后我发现我接触过的项目开发中能够做到这样要求的似乎还没有遇到。个人的成长以及公司的进步看起来都是长路漫漫啊,继续上下求索吧!

1221_MISRA_C规范学习_关于函数的规则要求相关推荐

  1. 追求卓越追求完美规范学习_追求新的黄金比例

    追求卓越追求完美规范学习 The golden ratio is originally a mathematical term. But art, architecture, and design a ...

  2. 1225_MISRA_C规范学习_预处理命令规则要求

    全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking! 19.1, 这一条应该难以全部实现,比如 ...

  3. SQL学习_常用函数参考

    1. AVG() 函数SELECT AVG(column_name) AS xxx FROM table_name// 从access_log中选择site_id和count,当count比count ...

  4. linux系统编程学习_(2)进程控制-- fork函数、exec函数族、回收子进程--孤儿进程僵尸进程、wait函数

    linux系统编程学习_(2)进程控制-- fork函数.exec函数族.回收子进程–孤儿进程僵尸进程.wait函数 进程控制 fork()函数 创建一个子进程. pid_t fork(void); ...

  5. python数据参数_零基础学习python数据分析——函数的参数

    原标题:零基础学习python数据分析--函数的参数 上一节课中我们讲了python的函数定义,Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数 ...

  6. 元学习 迁移学习_元学习就是您所需要的

    元学习 迁移学习 Update: This post is part of a blog series on Meta-Learning that I'm working on. Check out ...

  7. PostgreSQL学习手册(五) 函数和操作符

    PostgreSQL学习手册(五) 函数和操作符 一.逻辑操作符:     常用的逻辑操作符有:AND.OR和NOT.其语义与其它编程语言中的逻辑操作符完全相同. 二.比较操作符:     下面是Po ...

  8. C语言编程规范 学习笔记

    C语言编程规范 一.代码总体原则 1.清晰 2.简洁 3.选择适合的风格,与代码原有风格保持一致 二.头文件 背景 术语定义 原则 2.1 头文件中适合放置接口的声明,不适合放置实现 原则 2.2 头 ...

  9. C语言编程规范学习笔记和总结(附华为编程规范机试参考试题)

    目录 规范说明 一.头文件 原则1.1 头文件中适合放置接口的声明,不适合放置实现. 原则1.2 头文件应当职责单一 原则1.3 头文件应向稳定的方向包含 规则1.1 每一个.c文件应有一个同名.h文 ...

  10. 1083_MISRA_C规范学习_2004_Rule_5.3

    MISRA_C规范学习_2004_Rule_5.3 Grey 全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happ ...

最新文章

  1. JS中的call和apply
  2. java double类型保留两位小数4种方法
  3. 在学习django的时候
  4. django 集成个推_Django网站添加WebIM
  5. 风雨网规路:跌倒了,是件坏事吗?
  6. SpringBoot-@Configuration
  7. android ndk使用c 11,使用c 11 std :: async在android ndk中使用不完整类型无效
  8. 树--树的基本性质(JAVA)
  9. Memo History Tracking History in Access 2007
  10. 易用性软件测试用例,易用性测试用例集
  11. MySQL管理工具安装说明
  12. word 多级列表标题设置
  13. OSPF开销值、协议优先级及计时器的修改
  14. 图书馆管理系统(数据库版)
  15. mysql怎么创建blog_「MySQL创建与删除数据库」- 海风纷飞Blog
  16. Manjaro - Pacman命令详解
  17. 苹果手机屏幕尺寸_Apple 苹果 iPhone SE2智能手机屏幕测评报告 「Soomal」
  18. 京东搭配购怎么设置,操作指南来啦
  19. 强大合作伙伴生态系统助力 Denodo 在大中华区不断发展壮大
  20. 〖教程〗LadonGO免杀Win10 Defender

热门文章

  1. 常见开源代码扫描检测技术分析
  2. latex的下载与安装
  3. 屏幕录像专家android,屏幕录像专家
  4. 简述计算机硬盘常见故障及处理方法,常见计算机硬盘故障的解决方法
  5. 【软考】系统集成项目管理工程师(四)项目管理一般知识
  6. C语言新手入门可执行代码(加备注)
  7. adb 环境变量配置 无效
  8. Ubuntu ADB 环境变量配置
  9. 黑马程序员-为梦想而努力!
  10. 超级计算机summit存储容量,美国Summit超级计算机:采用超过27000块NV计算卡