MISRA compliance
All MCUXpresso SDK drivers comply to MISRA 2012 rules with exceptions in Table 1.
|Exception rules
|Description
| |—————–|————-| |Directive 4.4
|Sections of code should not be commented out.
| |Directive 4.5
|Identifiers in the same namespace with overlapping visibility should be typographically unambiguous.
| |Directive 4.6
|Typedefs that indicate size and signedness should be used in place of the basic numerical types.
| |Directive 4.8
|If a pointer to a structure or union is never dereferenced within a translation unit, then the implementation of the object should be hidden.
| |Directive 4.9
|A function should be used in preference to a function-like macro where they are interchangeable.
| |Directive 4.13
|Functions which are designed to provide operations on a resource should be called in an appropriate sequence.
| |Rule 1.2
|Language extensions should not be used.
| |Rule 2.3
|A project should not contain unused type declarations.
| |Rule 2.4
|A project should not contain unused tag declarations.
| |Rule 2.5
|A project should not contain unused macro declarations.
| |Rule 2.6
|A function should not contain unused label declarations.
| |Rule 2.7
|There should be no unused parameters in functions.
| |Rule 4.2
|Trigraphs should not be used.
| |Rule 5.1
|External identifiers shall be distinct.
| |Rule 5.4
|Macro identifiers shall be distinct.
| |Rule 5.9
|Identifiers that define objects or functions with internal linkage should be unique.
| |Rule 8.7
|Functions and objects should not be defined with external linkage if they are referenced in only one translation unit.
| |Rule 8.9
|An object should be defined at block scope if its identifier only appears in a single function.
| |Rule 8.11
|When an array with external linkage is declared, its size should be explicitly specified.
| |Rule 8.13
|A pointer should point to a const-qualified type whenever possible.
| |Rule 10.5
|The value of an expression should not be cast to an inappropriate essential type.
| |Rule 11.4
|A conversion should not be performed between a pointer to object and an integer type.
| |Rule 11.5
|A conversion should not be performed from pointer to void into pointer to object.
| |Rule 12.1
|The precedence of operators within expressions should be made explicit.
| |Rule 12.3
|The comma operator should not be used.
| |Rule 12.4
|Evaluation of constant expressions should not lead to unsigned integer wrap-around.
| |Rule 13.3
|A full expression containing an increment (++) or decrement (–) operator should have no other potential side effects other than that caused by the increment or decrement operator.
| |Rule 15.4
|There should be no more than one break or go to statement used to terminate any iteration statement.
| |Rule 17.5
|The function argument corresponding to a parameter declared to have an array type shall have an appropriate number of elements.
| |Rule 17.8
|A function parameter should not be modified.
| |Rule 19.2
|The union keyword should not be used.
| |Rule 20.1
|#include directives should only be preceded by preprocessor directives or comments.
| |Rule 20.10
|The # and ## preprocessor operators should not be used.
| |Rule 21.1
|#define and #undef shall not be used on a reserved identifier or reserved macro name.
| |Rule 21.2
|A reserved identifier or macro name shall not be declared.
| |Rule 21.12
|The exception handling features of <fenv.h> should not be used.
|