全部学习汇总: GitHub - GreyZhang/misra_c_hacking: MISRA C, I'm coming! Happy hacking!

19.1, 这一条应该难以全部实现,比如在AUTOSAR的软件中进行存储分区是很常见的。而存储分区其实是在反复包含memmap的一个头文件。这样的处理机制就很难保证这一条规则的符合,好在这只是一个建议而不是强制。

19.2, 这一条似乎几乎是不可能出现的一个规则要求,应该少有人会在代码文件命名的时候选择使用这样的符号来给自己增加麻烦。

19.3, 这条规则好像在给我更多选择的样子,其实最后一个用法在看到之前我甚至是直接不会考虑到的。

19.4, 宏定义使用有使用上的诸多限制,主要是在展开内容的限制上。而我个人在代码设计的时候,基本上都是满足这样的要求的。甚至说,我使用的范围会比这个范围更小一些。最多是定义几个符号或者是常量,如此而已。这样,可以在很大程度上简化设计的思维模式。

19.5, 代码块中不能够用#defined以及#undefined,虽然这个在语法本身上没有问题。但是这样的使用可能会给人带来误导,让人认为这个有效的范围只是在这个代码块的范围内。其实,不管是在什么地方使用,这个有效范围都是全局的。

19.6, #undef尽量不要用。

19.7, 能够使用函数的时候,尽量不要用宏定义。

19.8, 类函数的宏没有参数传入的时候,不要进行调用。

19.9 类函数的宏中不要再增加预处理的指令,不然这样的处理很令人费解。

19.10, 类函数的宏每一个参数都要放到相应的括号中去。

19.11, 预处理中的所有符号都应是定义过的,判断是否存在或者定义涉及到的命令除外。

19.12, #或者##操作符在一个宏定义中至多出现一次。这个我个人是直接没有用过的,但是呢,我在一个多核的工程里面看到了基础的代码中用这种方式扩展出来三个不同内核的下标信息。想来,我自己设计软件的时候可能继续不会使用。

19.13, 跟我考虑的一样,其实在编码的建议中也是建议上面的这个不要用。

19.14, #defined只允许使用两种标准的形式。

19.15, 这个或许是我在软件设计中用的比较多的一个,也就是很多人说的防止重复包含的include-sandwitch。

19.16, 所有的预处理操作都要有明确的用途。

19.17, 条件分支类的预处理表达,全都放在同一个文件之中。

到此为止,整个MISRA C 2004关于预处理命令的一些要求就已经全都梳理晚了。

1225_MISRA_C规范学习_预处理命令规则要求相关推荐

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

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

  2. c语言注释语句执行吗,C语言学习笔记之C语言概念解析(附资料分享)每一个语句都必须以分号结尾但预处理命令函数头和花括号“}”之后不能加分号...

    [[怪兽爱C语言]C语言学习笔记之C语言概念解析(附资料分享)]https://toutiao.com/group/6582429294901854728/?iid=15906422033&a ...

  3. R 多变量数据预处理_超长文详解:C语言预处理命令

    一  前言 预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作.预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置. 预处理是C语言的一个重要功能 ...

  4. vc++学习篇(三)——预处理命令之条件编译(#ifdef,#else,#endif,#if等)

    预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译.这样做的好处是,经过处理后的代码,将会变的很精短.   ...

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

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

  6. C语言预处理命令(预处理指令)

    C语言预处理命令分为:宏定义.文件包含.条件编译 什么是预处理命令? 预处理命令属于C语言编译器,而不是C语言的组成部分 预处理命令的作用:就是在编译和链接之前,对源文件进行一些文本方面的操作,比如文 ...

  7. 第二天学习:DOS命令与计算机语言发展史

    第二天学习:DOS命令与计算机语言发展史 1.DOS(Disk Operating System)命令 (1)概念 DOS是英文Disk Operating System的缩写,意思是"磁盘 ...

  8. c语言用define预处理命令定义,C语言程序设计第八章预处理命令..doc

    一.?选择题1.?对宏命令的处理是_ ___A.?在程序执行时进行的B.?在对程序中其他语句进行编译前进行的C.?在程序连接时进行的D.?与程序中其他语句同时进行编译2.?下面对编译预处理的叙述正确的 ...

  9. C/C++之预处理命令

    C程序的源代码中可包括各种编译指令,这些指令称为预处理命令.预处理命令属于C语言编译器,而不是C语言的组成部分.C语言预处理程序包括下列命令:#define,#error,#include,#if,# ...

最新文章

  1. Python 程序设计(第二版)董付国_清华大学出版社_习题答案与分析【针对8.4及其之前的】
  2. linux更改用户的shell,Linux下通过shell更改用户密码
  3. 直升机和固定翼实操期末考试
  4. 步骤4 - 微服务提供者接收请求,提供服务并传回给Orchestra
  5. python静态方法和类方法的区别_python中类的静态方法和类的类方法
  6. day17 Python 反射获取内容和修改内容
  7. android 辐射动画_Android 四种动画效果的调用实现代码
  8. php diff 文本比较,php文本操作方法集合比较
  9. JavaScript封装缓动动画函数
  10. RTI_DDS自定义插件开发 2 NDDS传输插件API
  11. VBA实现Excel模块筛选高级应用场景!
  12. linux下设置定时器,linux定时器设置.
  13. catboost原理
  14. 百度智能云落子贵阳,工业互联网进入新赛段
  15. tensorflow2.0 实现MTCNN、P_net数据生成,及训练-1
  16. 记应聘:华为 可信理论、技术与工程实验室 产品数据工程师
  17. 关键字__rptr、__eptr、 __pptr和__far
  18. The Fifty-second Of Word-Day
  19. 已解决org.springframework.context.annotation.ConflictingBeanDefinitionException异常的正确解决方法,亲测有效!!!
  20. 为什么现在流行resultful,webservice无人问津?

热门文章

  1. flash中弧度与角度的关系
  2. win10本次操作由于计算机的限制而取消,技术员设置Win10系统提示“本次操作由于这台计算机的限制而被取消”的修复教程...
  3. 壹佰智能名片v1.2.12
  4. java timer 重启服务器_服务器启动完成执行定时任务Timer,TimerTask
  5. c#Action和Func(简单用法)
  6. 华为AR2220 配置BGP与IGP交互
  7. C++ count函数
  8. file monitor
  9. [英语,iOS]美式英语语音语调基础
  10. Vue修改element-admin UI <el-table> tr 表-子项的高度 及背景颜色