how to resolve MISRA 10.3 violation?

27 次查看(过去 30 天)
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