MISRA.CAST.PTR.UNRELATEDObject of pointer type cast to unrelated type. MISRA-C Rule 11.2 (required): Conversions shall not be performed between a pointer to object and any type other than an integral type, another pointer to object type or a pointer to void.[Undefined 29] Such conversions are undefined. This rule means that an object pointer can be converted to or from:
No other conversions involving object pointers are permitted. MISRA-C++ Rule 5-2-7 (required): An object with pointer type shall not be converted to an unrelated pointer type, either directly or indirectly.[Unspecified 5.2.10(7)] RationaleThe result of converting from a pointer to an unrelated type is unspecified. Examplestruct S { int32_t i; int32_t j; }; class C { public: int32_t i; public: int32_t j; virtual ~C ( ); }; void f ( S * s ) { C * c = reinterpret_cast< C * >( s ); // Non-compliant int32_t i = reinterpret_cast< int32_t >( s ); // Compliant, but // breaks Rule 5—2—9 C * d = reinterpret_cast< C * >( i ); // Non-compliant S * e = reinterpret_cast< S * >( i ); // Compliant, but // breaks Rule 5—2—8 } |