MISRA C-2012准则之副作用

目录

一.MISRA C简介

二、副作用

错误示例 1:初始化列表包含持续副作用

错误示例 2:表达式副作用顺序不一致

错误示例 3:自增/自减表达式包含其他副作用

错误示例 4:逻辑运算符包含持续副作用

错误示例 5:sizeof包含副作用表达式

错误示例 6:使用赋值运算的结果

三、注意事项

相关文章如下:

1、《MISRA C-2012准则之标准C环境准则

2、《MISRA C-2012准则之未使用的代码的处理

3、《MISRA C-2012准则之注释

4、《MISRA C-2012准则之标识符

5、《MISRA C-2012准则之常量

6、《MISRA C-2012准则之声明与定义

7、《MISRA C-2012准则之初始化

8、《MISRA C-2012准则之基本数据类型

9、《MISRA C-2012准则之指针类型转换

10、《MISRA C-2012准则之表达式

11、《MISRA C-2012准则之副作用

一.MISRA C简介

MISRA C是由汽车产业软件可靠性协会(MISRA)提出的C语言开发标准。其目的是在增进嵌入式系统的安全性及可移植性。

MISRA C一开始主要是针对汽车产业,不过其它产业也逐渐开始使用MISRA C:包括航天、电信、  国防、医疗设备、铁路等领域中都已有厂商使用MISRA C。

MISRA C的第一版是在1998年发行,一般称为MISRA-C:1998。在2004年时发行了第二版的MISRA C,称作MISRA-C:2004。2012年发布第三版,为当前最新有效的C语言规范版本,称为MISRA-C:2012。 MISRA C不能100%保证程序不出问题,但是能尽可能的预防,总结一下,基本上使用MISRA C具有以下五个维度的优势:

1、提升可靠性

2、提升可读性

3、提升可移植性

4、提升可维护性

5、提升安全性

二、副作用

必需。初始化列表不应包含持续副作用。

必需。表达式的值和他的持续副作用应在允许的计算顺序下保持相同。

建议。包含自增或自减的完整表达式应无其他除自增自减外的潜在副作用。

建议。不应使用赋值运算的结果。

必需。逻辑与和逻辑或的右手操作数不应包含持续副作用。

强制。sizeof运算符的操作数不应包含任何有潜在副作用的表达式。        

错误示例 1:初始化列表包含持续副作

int i = 0;
int arr[] = {i++, i++}; // 错误:初始化列表中包含自增(副作用),行为未定义

错误示例 2:表达式副作用顺序不一

int a = 0;
int b = a++, a++; // 错误:a 和 a 的副作用顺序未定义,可能导致结果不确定

错误示例 3:自增/自减表达式包含其他副作

int x = 5;
int y = (x++, x = 10); // 错误:自增表达式包含赋值(潜在副作用),建议分开写

错误示例 4:逻辑运算符包含持续副作

int flag = 1;
int count = 0;
if (flag && (count++, flag)) // 错误:逻辑与的右手操作数包含副作用(count++),应避免

错误示例 5sizeof包含副作用表达

int i = 0;
int size = sizeof(i++); // 错误:sizeof的操作数包含自增(副作用),应避免

错误示例 6:使用赋值运算的结

int a = 0, b = 0;
if ((a = 1) && (b = 2)) // 错误:使用赋值运算的结果(a = 1 和 b = 2),应避免

三、注意事项

  • 初始化列表应避免自增、自减、函数调用等可能产生副作用的操作
  • 表达式中的副作用(如自增、赋值)应确保在所有可能的计算顺序下结果一致
  • 逻辑与(&&)和逻辑或(||)的短路特性可能导致副作用只部分执行,应避免
  • sizeof运算符要求操作数是纯表达式(无副作用),如变量或常量
  • 赋值运算的结果(如 a = b)不应直接用于条件判断或复合表达式,除非明确需要其值

Windows 系统修复工具主要用于解决 Windows 11/10 系统中的各种常见问题,具有操作简单、功能全面等特点: 文件资源管理器修复:可解决文件资源管理器卡死、崩溃、无响应等问题,能终止崩溃循环。还可修复右键菜单无响应或选项缺失问题,以及重建缩略图缓存,让图片、视频等文件的缩略图正常显示,此外,还能处理桌面缺少回收站图标、回收站损坏等问题。 互联网和连接修复:能够刷新 DNS 缓存,加速网页加载速度,减少访问延迟。可重置 TCP/IP 协议栈,增强网络连接稳定性,减少网络掉线情况,还能还原 Hosts 文件,清除恶意程序对网络设置的篡改,保障网络安全,解决电脑重装系统后网络无法连接、浏览器主页被篡改等问题。 系统修复:集成系统文件检查器(SFC),可自动扫描并修复受损的系统文件。能解决 Windows 激活状态异常的问题,还可重建 DLL 注册库,恢复应用程序兼容性,解决部分软件无法正常运行的问题,同时也能处理如 Windows 沙箱无法启动、Windows 将 JPG 或 JPEG 保存为 JFIF 等系统问题。 系统工具维护:提供启动管理器、服务管理器和进程管理器等工具,用户可控制和管理启动程序、系统服务和当前运行的进程,提高系统的启动和运行速度,防止不必要的程序和服务占用系统资源。还能查看系统规格,如处理器线程数、最大显示分辨率等。 故障排除:集成超过 20 个微软官方诊断工具,可对系统问题进行专业排查,还能生成硬件健康状态报告。能解决搜索和索引故障、邮件和日历应用程序崩溃、设置应用程序无法启动等问题,也可处理打印机、网络适配器、Windows 更新等相关故障。 其他修复功能:可以重置组策略设置、catroot2 文件夹、记事本等多种系统设置和组件,如重置 Windows 应用商店缓存、Windows 防火墙设置等。还能添加重建图标缓存支持,恢复粘滞便笺删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EmbSW_Guru_Wx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值