请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F280037工具/软件:
我正在对我们正在执行的一个电机项目运行 MISRA 2012 合规性、并发现在 motorcontrolsdk 中提供的示例代码似乎违反了 MISRA 11.8。 例如:
motorVars_M1 定义为 易失性 MOTOR_Vars_t motorVars_M1; 并声明为 外部易失性 MOTOR_Vars_t motorVars_M1;
但在 motor1_drive.c 中访问此变量时、始终按如下所示完成:
motor_Vars_t *obj =(motor_Vars_t *) handle;
此转换有效地忽略/删除新创建的指针(MISRA 11.8 违规)中的“volatile “。 我想知道为什么代码是以这种方式编写的吗? 根据优化级别和相关代码、C2000 编译器似乎在某些情况下将原始对象视为易失性对象、或者在其他情况下不会视为易失性对象;这使得将代码纳入 MISRA 合规性变得更加困难 、或许我遗漏了一些内容?
谢谢、
此转换有效地忽略/删除新创建的指针(MISRA 11.8 违规)中的“volatile “。 我想知道为什么代码是以这种方式编写的吗? 根据优化级别和相关代码、C2000 编译器似乎在某些情况下将原始对象视为易失性对象、或者在其他情况下不会视为易失性对象;这使得将代码纳入 MISRA 合规性变得更加困难 、或许我遗漏了一些内容?
谢谢、
Jeremy