
MISRA C 2012
文章平均质量分 92
MISRA 2012学习笔记
赞哥哥s
汽车行业小白 学海无涯 共同进步 感谢关注
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
MISRA C2012学习笔记(10)-Rules 8.15
但是,发生了从一个swtich 子句到另一个 switch 子句的跳转,而由于此规则的目的,将 switch 的子句视为代码块,因此这个 goto 语句是违规的。展开:为符合此规则的设计目的,将不包含复合语句(复合语句:{}括起来的语句)的 switch 子句也视为一个代码块(即不用{}括起来的 case 子句也被视为独立的代码块)else if 序列的序列是防御性编程,相似的,还有 switch 语句中对 default 子句的要求(请参见规则 16.5)。复合语句的使用显著地减少了发生这种情况的机会。原创 2024-12-08 19:55:39 · 1126 阅读 · 0 评论 -
MISRA C2012学习笔记(9)-Rules 8.14
注意:第二个条件意味着循环计数器的值必须在循环的每次迭代中改变,并且对于给定的循环实例,它必须总是在相同的方向上改变。但是,在不同的实例上,它可能在不同的方向上发生变化,例如,有时向后读取数组的元素,有时向前读取它们。在接下来的循环中,p是一个循环计数器。即使带有浮点循环计数器的循环在一个实现上表现正确,它也可能在另一个实现上给出不同的迭代次数。下面的合规示例使用整数循环计数器来保证 1000 次循环,并在循环内使用它生成 f。示例:在下面的 C99 示例中,i 是循环计数器,flag 是循环控制标志。原创 2024-11-10 19:14:19 · 795 阅读 · 0 评论 -
MISRA C2012学习笔记(8)-Rules 8.13
操作数的类型为“指向形参为 int32_t 型长度为 v 的数组的函数的 n 个指针的数组”。C99 标准中,通常不在运行时评估在操作数中出现的表达式。函数指示符和函数实参的相对求值顺序是未指定的,在这个不兼容的示例中,如果调用g修改了p的值,则不确定函数指示符p->f是在调用g之前还是之后使用p的值。在 sizeof(V)表达式中,若 V 是“volatile”修饰的非变长数组类型的左值,这种情况是被认可的。中的表达式求值过程中,副作用的发生顺序是不确定的,因此,如果这些副作用持续存在,则初始化行为是。原创 2024-08-31 20:34:55 · 1416 阅读 · 0 评论 -
MISRA C2012学习笔记(7)-Rules 8.12
为便于理解以下示例,应注意,1u 的基本类型是 unsigned char,而 1UL 的基本类型是 unsigned long。在下面这个示例中,表达式 DELAY + WIDTH 的值为 70000,但是在具有 16 位 int 类型的计算机上,该。所有这些都是合规的,但取决于 a,b 和 c 的类型,具有多个运算符的任何表达式都可能违反其他规则。,可以消除程序员的期望与事实不符的可能性。下面的示例显示具有单目或后缀运算符的表达式,其操作数是主表达式或顶级运算符具有优先级 15 的表达式。原创 2024-07-20 21:02:10 · 985 阅读 · 0 评论 -
MISRA C2012学习笔记(6)-Rules 8.11
的。例如,如果将类型为 int 的对象作为 short 进行访问,则即使 int 和 short 具有相同的表示和对齐要求,其行为也是未定义的。例外:将指向对象类型的指针转换为指向对象类型为 char,signed char 或 unsigned char 之一的指针是被允许的。C 标准确保了可以使用指向这些类型的指针来访问对象的各个字节。原创 2024-07-07 18:20:01 · 1126 阅读 · 0 评论 -
MISRA 2012学习笔记(5)-Rules 8.10
这允许将不同的枚举类型作为不同的类型处理,从而支持更强大的类型检查系统。除了先前的规则外,基本类型模型还对操作数为复合表达式的表达式进行了进一步的限制,如下所述。的,因为左边的加法在uint16_t类型中执行,右边的加法在uint32_t类型中执行,需要将复合表达式u16a + u16b。•在C99中,对_Bool类型强制转换或赋值的结果总是0或1。限制复合表达式的隐式转换意味着,表达式中的算术运算序列必须以完全相同的基本类型进行。•程序员中常见的误解是,执行计算的类型受到分配或强制转换结果的类型的影响。原创 2023-11-19 21:48:54 · 1534 阅读 · 0 评论 -
MISRA 2012学习笔记(4)-Rules 8.8-8.9
等级:必要分析:可判定,单一编译单元适用:C90,C99原理:C90标准允许在某些情况下省略类型,在这种情况下隐式指定int类型。可以使用隐式int类型的情况示例如下:•对象声明;•参数声明;•成员声明;•typedef声明;•函数返回类型省略显式类型声明可能会导致混淆。k 的类型隐式定义为 const int,而实际可能期望为 const char示例:extern x;/* 违规 - 隐式int类型 *//* 合规 - 显式类型 */const y;原创 2023-08-27 18:35:44 · 1185 阅读 · 0 评论 -
MISRA 2012学习笔记(3)-Rules 8.4-8.7
示例:下面的示例中,“file1.c”和“file2.c”是同一个项目的一部分。原创 2023-08-19 22:10:43 · 1308 阅读 · 0 评论 -
MISRA 2012学习笔记(2)-Rules 8.1-3
MISRA 2012学习笔记Rules 8.1-3原创 2023-08-13 20:13:33 · 1014 阅读 · 0 评论 -
MISRA 2012学习笔记(1)-Directives
尽管在调用free之后存储在指针中的值保持不变,但在某些目标上,它所指向的内存可能不再存在,并且复制该指针的行为可能导致。原创 2023-08-06 14:48:35 · 626 阅读 · 0 评论