MISRA C:2012 Rule 11.6
A cast shall not be performed between pointer to void and an arithmetic type
Description
Rule Definition
A cast shall not be performed between pointer to void and an arithmetic type.
Rationale
Conversion between integer types and pointers to void
can
cause errors or undefined behavior.
If an integer type is cast to a pointer, the resulting pointer can be incorrectly aligned. The incorrect alignment causes undefined behavior.
If a pointer is cast to an arithmetic type, the resulting value can be outside the allowed range for the type.
Conversion between non-integer arithmetic types and
pointers to void
is undefined.
Polyspace Implementation
Casts or implicit conversions from NULL
or (void*)0
do
not generate a warning.
Troubleshooting
If you expect a rule violation but do not see it, refer to Diagnose Why Coding Standard Violations Do Not Appear as Expected.
Examples
Check Information
Group: Pointer Type Conversions |
Category: Required |
AGC Category: Required |
Version History
Introduced in R2014b