App-UnifdefPlus

 view release on metacpan or  search on metacpan

t/test1.c  view on Meta::CPAN

#else // (I)
/* 3.7 BAR defined, but not FOO (I) */
#endif // (I)
#if defined FOOBAR // (I)
/* 3.8 BAR and FOOBAR defined (I) */
#else // (I)
/* 3.9 BAR defined but not FOOBAR (I) */
#endif // (I)
#else // (I)
#if defined FOOBAR //(V)
/* 3.1 BAR not defined, FOOBAR defined (V) */
#else //(V)
/* 3.1 BAR and FOOBAR not defined (V) */
#endif //(V)
#endif //(I)

/* 4:  Check complex expressions with #if:  */
// note: && has higher precedence than ||:

#if defined(FOO) && defined(BAR)
/* 4.1 FOO and BAR are defined (I)*/
#else
/* 4.1 FOO or BAR are undefined (V) */
#endif

#if defined(FOO) || defined(BAR)
/* 4.2 FOO or BAR are defined (V) */
#else
/* 4.2 FOO and BAR are undefined (I) */
#endif

#if defined(D1) && defined(D2) || defined(U1)
/* 4.3 #if defined(D1) && defined(D2) || defined(U1) (V)*/
#else
/* 4.3 #else (I) */
#endif


#if defined(D1) || defined(D2) && defined(U1)
/* 4.4 #if defined(D1) || defined(D2) && defined(U1) (V) */
#else
/* 4.4 #else (I) */
#endif

#if (defined(D1) || defined(D2)) && defined(U1)
/* 4.5 #if (defined(D1) || defined(D2)) && defined(U1) (I) */
#else
/* 4.5 #else (#if (defined(D1) || defined(D2)) && defined(U1)) (V)*/
#endif

#if (defined(D1) || defined(D2)) && defined(U1) || defined(FOOBAR)
/* 4.6 #if (defined(D1) || defined(D2)) && defined(U1) || defined(FOOBAR) (V) */
#else
/* 4.6 #else */
#endif



#if (D2 * 2 - 1 > D1 + 1 ) \
	&& (defined(FOO) || defined(FOOBAR)) \
	&& (FOOBAR > 3 * (9 - 2) ) // eol comment
/* 4.20 complex... -- should resolve to #if ( FOOBAR > 3 * (9 - 2) ) // eol comment */
#else
/* 4.20 #else */
#endif

#if  ( defined(U1) && defined(UNKNOWN1) ) || \
       !defined D1  // resolves to false
    /* 4.21 line will NOT appear */
#elif D1 <= 3 && U1 > (3 + 2)   // (4.21 condition simplifies)
    /* 4.21 line will appear */
#elif D1 > 3  // condition resolves to false (1 < 3...)
    /* 4.21 line will NOT appear */
#else
    /* 4.21 line will appear, as an else to the unknown */
#endif


// Note: known bug: whitespace at opening brace is not being preserved...
// #if ( ( /*comment*/ FOOBAR > 3 * (9-2)) && defined(FOO) )
// does not preserve the comment or whitespaces.




( run in 0.532 second using v1.01-cache-2.11-cpan-98e64b0badf )