/* ----------------- Example code from MISRA C:2012 begin ----------------- */ #define M1( x, y ) ( x * y ) r1 = M1 ( 1 + 2, 3 + 4 ); /* Non-compliant */ r2 = M1 ( ( 1 + 2 ), ( 3 + 4 ) ); /* Compliant */ #define M2( x, y ) ( ( x ) * ( y ) ) r3 = M2 ( 1 + 2, 3 + 4 ); /* Compliant */ #define M3( x ) a ## x = ( x ) int16_t M3 ( 0 ); /* Compliant */ #define GET_MEMBER( S, M ) ( S ).M v = GET_MEMBER ( s1, minval ); /* Compliant */ #define F( X ) G ( X ) #define G( Y ) ( ( Y ) + 1 ) int16_t x = F ( 2 ); /* Compliant */ /* ------------------ Example code from MISRA C:2012 end ------------------ */