在函数参数中评估 C 表达式是否违反了 MISRA C 准则?

Is evaluating C expression in the function argument violating MISRA C guideline?

现在考虑在安全关键嵌入式软件中执行的以下代码,其中 gcc_optimization_level 是 Level2 大小。假设一个函数,void foo(float v); 被调用为 foo(a/b);,其中 ab 也是 float。在调用函数 foo 时计算 C 表达式 a/b 是否违反了任何 MISRA C 准则?

ps:本题是在上周弱化的上一版基础上修改的。现在这个问题确保它是一个单一的问题,而不是一个家庭作业问题,希望不会引起意见。

只要类型正确,MISRA C 中就不会阻止调用 foo( a / b )

在 MISRA C 中,essential types 的概念试图将更强的类型引入 C 语言 - 这在 MISRA C:2012 的附录 D 中有详细说明,规则 10.x指导方针正在执行。

同样,除了第 4.2 节“了解编译器”和第 5.3.1 节“编译器配置”讨论必要知识(未详细说明任何指南)之外,MISRA C 中没有任何内容讨论优化级别。这些部分现在构成 (freely downloadable) MISRA Compliance.

的一部分

免责声明:查看个人资料。