Union in an enclosing struct, class, or other union

The PORTING checkers identify code that might rely on specific implementation details in different compilers. The PORTING.UNIONS checker detects situations in which a union is used within an enclosing structure, class, or other union.

Vulnerability and risk

This checker warns you of a situation that needs attention during code porting. The layout of embedded unions occurring within bounding structures or other unions can vary depending on the packing and alignment performed by the compiler.

Mitigation and prevention

If these data structures are transmitted or stored, the ported code needs to conform bit-wise with the original representation. Using alignment or layout pragmas is the best way to correct alignment. Another alternative is using compiler switches on the new platform.