Editor's Note: This article was originally presented at ESC
Boston 2011. The purpose of MISRA C and MISRA C++ guidelines are
not to promote the use of C or C++ in critical systems. Rather,
the guidelines accept that these languages are being used for an
increasing number of projects. The guidelines discuss general
problems in software engineering and note that C and C++ do not
have as much error checking as other languages do. Thus the
guidelines hope to make C and C++ safer to use, although they do
not endorse MISRA C or MISRA C++ over other languages. MISRA C
is a subset of the C language. In particular, it is based on the
ISO/IEC 9899:1990 C standard, which is identical to the ANSI
X3.159-1989 standard, often called C ’89. Thus every MISRA C
program is a valid C program. The MISRA C subset is defined by
141 rules that constrain the C language. Correspondingly, MISRA
C++ is a subset of the ISO/IEC 14882:2003 C++ standard. MISRA
C++ is based on 228 rules, many of which are refinements of the
MISRA C rules to