This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TMS320F28335:Misra 和 C28x fastRTS SINCOS

Guru**** 2535150 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/733886/compiler-tms320f28335-misra-and-c28x-fastrts-sincos

器件型号:TMS320F28335

工具/软件:TI C/C++编译器

我正在项目中使用 fastRTS 库来调用 SINCOS 函数、如下所示:

float sinVal = 0.0;
float cosVal= 0.0;
float thetaVal = 3.1415;
SinCos (thetaVal、SinVal、CosVal); 

代码编译和工作正常、但在执行 MISRA 检查时收到以下警告:

#1394-D (MISRA-C:2004 10.2/R)如果表达式是函数参数、浮动类型表达式的值不应隐式转换为其他类型

调用此函数以避免此警告的正确方法是什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Arturo、

    函数 protype 为 void sincos (float32 X、float32* PtrSin、float32* PtrCos);是否可以使参数与函数的原型相匹配,并查看 MISRA 违规是否消失?  

    谢谢

    Aravindhan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果我打开  sincos 的声明、我会找到 函数原型以及 float32的 typedef:

    #ifndef DSP28_data_Types
    #define DSP28_data_Types
    typedef int int16;
    typedef long int32;
    typedef long long int64;
    typedef unsigned int uint16;
    typedef unsigned long uint32;
    typedef unsigned long long uint64;
    typedef float float32;
    typedef long double float64;
    #endif
    
    void sincos (float32 radan、float32* PtrSin、float32* PtrCos); 

    因此、对于该处理器、我认为浮点 值与 float32相同。 在任何情况下、我更改了函数、但仍然得到相同的 MISRA 违规:

    float32 PtrSin = 0.0;
    float32 PtrCos = 0.0;
    float32 radan = 3.1415;
    sincos (radan、&PtrSin、&PtrCos); 

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Arturo、

    我通读了规则10.2、但我无法理解为什么这条线会为 MISRA 抛出错误。 我要求您使类型相同、以便 MISRA 校验器可以轻松检查类型匹配。 您使用哪种工具来运行 MISRA? 以及您使用的 TI 编译器的版本。 请告诉我。

    谢谢
    阿拉夫
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用的是 CCS v7.3.0.00019、并在 CCS Build > C2000 Compiler > Advanced Options > MISRA-C:2004下运行内置检查。我运行的编译器版本为 TI v16.9.4.LTS。  

    我能够使用上述设置在新项目中重现此问题。 当我将编译器版本更改为 TI v18.1.0.LTS 时、该警告消失。  MISRA 检查器是否使用新编译器版本进行了更新?