MISRA C++:2023 Rule 21.2.4
Description
Rule Definition
The macro offsetof
shall not be used. 1
Rationale
Using offsetof
exposes the memory layout of a class or structure and
breaks its encapsulation. Additionally, use of the offsetof
macro can
result in undefined behavior if the specified member is a bit-field, static data member, or
member function.
Design your classes to avoid the need for offsetof
. For example, you
can use member functions or operator overloading to access members indirectly. If you need
to work with offsets, consider using member function pointers or designing your class to
provide the necessary access in a type-safe manner.
Polyspace Implementation
The rule checker reports a violation for any use of the offsetof
macro.
Troubleshooting
If you expect a rule violation but Polyspace® does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.
Examples
Check Information
Group: Language support library |
Category: Required |
Version History
Introduced in R2024b
1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.