Introduction to MISRA C

MISRA, The Motor Industry Software Reliability Association, is a collaboration between vehicle manufacturers, component suppliers and engineering consultancies which seeks to promote best practice in developing safety-related electronic systems in road vehicles and other embedded systems. To this end MISRA publishes documents that provide accessible information for engineers and management, and holds events to permit the exchange of experiences between practitioners.

MISRA-C:1998 front cover As part of these activities, MISRA C was first published in 1998. The intention was to provide a "restricted subset of a standardized structured language" as required in the 1994 MISRA Guidelines for automotive systems being developed to meet the requirements of Safety Integrity Level (SIL) 2 and above.

Since its launch in 1998, the uptake and usage of MISRA C has far exceeded our expectations. MISRA C was originally developed to support the language requirements of the 1994 MISRA Guidelines, as noted above. Since that time, however, MISRA C has been adopted and used across a wide variety of industries and applications including the rail, aerospace, military and medical sectors. Furthermore, a significant number of tools are available that support enforcing the MISRA C rules. In Japan, a Japanese translation of MISRA C has been published by JSAE, and the MISRA C Study Group have produced a book (in Japanese) giving detailed explanations of the rules and additional code examples.

We received a considerable amount of feedback on MISRA C and recognized that a revision was appropriate, in particular to address the following:
  • Ensuring that the language used is consistent with the standard language
  • Replacing generalized rules for Undefined Behaviour with specific rules targeted at Undefined Behaviour only
  • Ensuring "one rule, one issue"; i.e. complex rules are split into atomic rules for ease of compliance
  • Adding to and improving the code examples
  • Removing the option for tool-less use.

In updating MISRA C, the aim has been to avoid new material and to ensure backwards compatibility with the earlier version (MISRA-C:1998) where possible.

The new version of MISRA C is known as MISRA-C:2004 and is titled "Guidelines for the use of the C language in critical systems."