/* accept 'defined' as result of substitution */ ----- 1 ------#define AAA 2#define BBB#define CCC (defined ( AAA ) && AAA > 1 && !defined BBB)#if !CCCOK#elseNOT OK#endif ----- 2 ------#undef BBB#if CCCOK#elseNOT OK#endif ----- 3 ------#define DEFINED defined#define DDD (DEFINED ( AAA ) && AAA > 1 && !DEFINED BBB)#if (DDD)OK#elseNOT OK#endif ----- 4 ------#undef AAA#if !(DDD)OK#elseNOT OK#endif
/* accept 'defined' as result of substitution */
----- 1 ------
#define AAA 2
#define BBB
#define CCC (defined ( AAA ) && AAA > 1 && !defined BBB)
#if !CCC
OK
#else
NOT OK
#endif
----- 2 ------
#undef BBB
#if CCC
OK
#else
NOT OK
#endif
----- 3 ------
#define DEFINED defined
#define DDD (DEFINED ( AAA ) && AAA > 1 && !DEFINED BBB)
#if (DDD)
OK
#else
NOT OK
#endif
----- 4 ------
#undef AAA
#if !(DDD)
OK
#else
NOT OK
#endif