how to resolve MISRA 10.3 violation?

37 ビュー (過去 30 日間)
snehal pawar
snehal pawar 2019 年 9 月 3 日
回答済み: Anavi Somani 2023 年 7 月 10 日
In my C project I have use
typedef unsigned char uint8;
uint8 arry[10];
arry[5] = 'E';
but i got an MISRA violation 10.3 as "The expression is assigned to an object with a different essential type category" how to resolve this violation
thanks in advance
  1 件のコメント
David Sosa
David Sosa 2022 年 8 月 4 日
A "char" and a "uint8_t" have different essential type categories (see The MISRA Essential type model).
To solve your issue you need to have a "char arr[10]". Then the violation will go away.

サインインしてコメントする。

回答 (1 件)

Anavi Somani
Anavi Somani 2023 年 7 月 10 日
You are giving an object of type uint8, an unsigned integer type, the value of the letter "E," which is a MISRA violation. According to MISRA C:2012 Rule 10.3, the assignment is not permitted since the character "E" belongs to a different essential type category than an unsigned integer.
There are a few options for dealing with this violation.
  • One approach is to convert the object's type to a character type. To achieve this, declare the object as char rather than uint8.
  • Use a cast to explicitly convert the value of the character to an unsigned integer.
typedef unsigned char uint8;
uint8 arry[10];
arry[5] = (uint8)'E';

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by