pp27.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 248 行
C
248 行
// pp27.c -- preprocessor test # 27
//
//
#include "fail.h"
main() {
// defined
#if defined( me ) || defined( you )
fail( __LINE__ );
#endif
#if defined me || defined( you )
fail( __LINE__ );
#endif
#define me
#if defined( me ) && !defined( you )
#else
fail( __LINE__ );
#endif
#if defined me || defined( you )
#else
fail( __LINE__ );
#endif
#if defined (^)
fail( __LINE__ );
#endif
// unary
#if !1
fail( __LINE__ );
#endif
#if -1 > 0
fail( __LINE__ );
#endif
#if !0
#else
fail( __LINE__ );
#endif
#if a*-1 == -a
#else
fail( __LINE__ );
#endif
#if a != +a
fail( __LINE__ );
#endif
#if - -a != +a
fail( __LINE__ );
#endif
#if __WATCOM_REVISION__ >= 8
#if (0x00000011 != ~0xffffffffffffffee) // int64
fail( __LINE__ );
#endif
#else // __WATCOM_REIVION__ < 8
#if (0x00000011 != ~0xffffffee)
fail( __LINE__ );
#endif
#endif
// multiplicitive
#define a 42
#define b 6
#if a == b*7
#else
fail( __LINE__ );
#endif
#if a != b*7
fail( __LINE__ );
#endif
#if b == a/7
#else
fail( __LINE__ );
#endif
#if b != a/7
fail( __LINE__ );
#endif
#if 4 % 3 != 1
fail( __LINE__ );
#endif
// additive
#if 4+1 == 8-3
#else
fail( __LINE__ );
#endif
// shift
#if 0x1 << 3 != 0x8
fail( __LINE__ );
#endif
#if 0x8 >> 3 != 0x1
fail( __LINE__ );
#endif
#if 0x8 >> 4 != 0
fail( __LINE__ );
#endif
// relational
#define small -4
#define medium 2
#define large 12
#if !(small < large)
fail( __LINE__ );
#endif
#if !(small <= large)
fail( __LINE__ );
#endif
#if small > large
fail( __LINE__ );
#endif
#if small >= large
fail( __LINE__ );
#endif
#if -234234 > -12
fail( __LINE__ );
#endif
#if -234234 > 4
fail( __LINE__ );
#endif
#if 0x8 >> 4 != 0
fail( __LINE__ );
#endif
#if !(small >= -4 )
fail( __LINE__ );
#endif
#if !(5 <= +5 )
fail( __LINE__ );
#endif
// bitwise and
#if !(0x101 & 0x011 )
fail( __LINE__ );
#endif
#if 0xf0f & 0x0e0
fail( __LINE__ );
#endif
// bitwise XOR
#if 0xf0f ^ 0x0b0
#else
fail( __LINE__ );
#endif
#if ( 0xf ^ 0x4 ) != 0xb
fail( __LINE__ );
#endif
#if 0xf ^ 0x4 != 0xb
#else
fail( __LINE__ );
#endif
// bitwise OR
#if ( 0xf0f | 0x0b0 ) != 0xfbf
fail( __LINE__ );
#endif
#if 0xf0f | 0x0b0 != 0xfbf
#else
fail( __LINE__ );
#endif
// logical and
#if ( 2==4/2 && 5!=3 && 2>-4 && 1-2 )
#else
fail( __LINE__ );
#endif
#if ( 4 && 3>=2 && 3>6 )
fail( __LINE__ );
#endif
// logical or
#if !defined( me ) || 3>4
fail( __LINE__ );
#endif
#if 3>4 || defined( me )
#else
fail( __LINE__ );
#endif
// conditional
#if 1 ? 0 : 1
fail( __LINE__ );
#endif
#if ((((((1) ? (0) : ((1)))))))
fail( __LINE__ );
#endif
#if 0 ? 0 : 1
#else
fail( __LINE__ );
#endif
_PASS;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?