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.

[参考译文] 编译器:Misra 10.1 和10.3 警告

Guru**** 2563930 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/592732/compiler-misra-10-1-and-10-3-warning

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

我正在将MISRA-C选项与最新版本的编译器TI 17.3 .0.STS一起使用。  我还尝试了早期版本的编译器。

我有一个功能,

insert_Checksum_Buffer(&UART_TXD_Buffer[0] );

编译器报告的内容  

说明资源路径位置类型
#1393-D (MISRA-C:2004 10.1 Pinteger类型的表达式的值不应隐式转换为不同的基础类型,如果该表达式不是常量的,并且是函数参数Frames.c /map/source map line 27 C/C++问题

位置

UINT8_t UART_TXD_Buffer[64];

功能定义为  

/*------------------ */
void Insert_Checksum_Buffer (uint8_t *PTR_address)

}

因此,我 要说:

insert_Checksum_Buffer((uint8_t *)(&UART_TXD_Buffer[0]) ;

现在我收到警告消息,

说明资源路径位置类型
#1395-D (MISRA-C:2004 10.3 Sinteger类型的复数表达式的值只能被类型转换为不宽于表达式Frames.c /map/source map line 236 C/C++ problem的基础类型的相同符号

如何在不 生成任何MISRA-C警告的情况下对此函数进行编码?

我的代码中有1000个需要解决的函数。

提前感谢

Rob

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

    编译器不应为该行发出MISRA诊断...

    Insert_Checksum Buffer(&UART_TXD_Buffer[0] );

    所以我在 SDOWP系统中提交了CodeGen-2238来调查此问题。  欢迎您使用我签名中下面的SDOWP链接进行关注。

    作为一种变通方法,请写入此内容...

    插入校验和缓冲区(UART_TXD_Buffer); 

    这些行是等效的。  出于某种原因,MISRA检查对它们的看法不同。

    谢谢,此致,

    -George

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

    感谢您的反馈, 这已解决了索引[0]引用的警告 ,但我仍有一个非零索引语句的问题。

    insert_Checksum_Buffer(&UART_TXD_Buffer[1] );

    Rob

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

    我更新 了CodeGen-2238,因此案例...

    Insert_Checksum Buffer(&UART_TXD_Buffer[1]);

     

    .也被考虑在内。  

    谢谢,此致,

    -George