1*fb3ef04dSDag-Erling Smørgrav /* 2*fb3ef04dSDag-Erling Smørgrav Distributed under the two-clause BSD licence; 3*fb3ef04dSDag-Erling Smørgrav see the COPYING file for details. */ 4*fb3ef04dSDag-Erling Smørgrav 5*fb3ef04dSDag-Erling Smørgrav #include <stdio.h> 6*fb3ef04dSDag-Erling Smørgrav #include <stdlib.h> 7*fb3ef04dSDag-Erling Smørgrav 8*fb3ef04dSDag-Erling Smørgrav #if (FOOB | FOO) == 43 foo1()9*fb3ef04dSDag-Erling Smørgravint foo1() { return 0; } 10*fb3ef04dSDag-Erling Smørgrav #else 11*fb3ef04dSDag-Erling Smørgrav #error FOOB bitwise-or FOO is not 43 12*fb3ef04dSDag-Erling Smørgrav #endif 13*fb3ef04dSDag-Erling Smørgrav 14*fb3ef04dSDag-Erling Smørgrav #if (FOO ^ FOO) == 0 foo2()15*fb3ef04dSDag-Erling Smørgravint foo2() { return 0; } 16*fb3ef04dSDag-Erling Smørgrav #else 17*fb3ef04dSDag-Erling Smørgrav #error FOO bitwise-xor FOO is not 0 18*fb3ef04dSDag-Erling Smørgrav #endif 19*fb3ef04dSDag-Erling Smørgrav 20*fb3ef04dSDag-Erling Smørgrav #if (FOOB & 2) == 2 foo3()21*fb3ef04dSDag-Erling Smørgravint foo3() { return 0; } 22*fb3ef04dSDag-Erling Smørgrav #else 23*fb3ef04dSDag-Erling Smørgrav #error FOOB bitwise-and 2 is not 2 24*fb3ef04dSDag-Erling Smørgrav #endif 25*fb3ef04dSDag-Erling Smørgrav 26*fb3ef04dSDag-Erling Smørgrav #if (FOO << 1) == 2 foo4()27*fb3ef04dSDag-Erling Smørgravint foo4() { return 0; } 28*fb3ef04dSDag-Erling Smørgrav #else 29*fb3ef04dSDag-Erling Smørgrav #error FOO left-shift 2 is not 2 30*fb3ef04dSDag-Erling Smørgrav #endif 31*fb3ef04dSDag-Erling Smørgrav 32*fb3ef04dSDag-Erling Smørgrav #if (FOOB >> 4) == 2 foo5()33*fb3ef04dSDag-Erling Smørgravint foo5() { return 0; } 34*fb3ef04dSDag-Erling Smørgrav #else 35*fb3ef04dSDag-Erling Smørgrav #error FOOB right-shift 2 is not 2 36*fb3ef04dSDag-Erling Smørgrav #endif 37*fb3ef04dSDag-Erling Smørgrav 38*fb3ef04dSDag-Erling Smørgrav #if (FOOB + FOO) == 43 foo6()39*fb3ef04dSDag-Erling Smørgravint foo6() { return 0; } 40*fb3ef04dSDag-Erling Smørgrav #else 41*fb3ef04dSDag-Erling Smørgrav #error FOOB add FOO is not 43 42*fb3ef04dSDag-Erling Smørgrav #endif 43*fb3ef04dSDag-Erling Smørgrav 44*fb3ef04dSDag-Erling Smørgrav #if (FOOB - FOO) == 41 foo7()45*fb3ef04dSDag-Erling Smørgravint foo7() { return 0; } 46*fb3ef04dSDag-Erling Smørgrav #else 47*fb3ef04dSDag-Erling Smørgrav #error FOOB subtract FOO is not 41 48*fb3ef04dSDag-Erling Smørgrav #endif 49*fb3ef04dSDag-Erling Smørgrav 50*fb3ef04dSDag-Erling Smørgrav #if (FOOB * 2) == 84 foo8()51*fb3ef04dSDag-Erling Smørgravint foo8() { return 0; } 52*fb3ef04dSDag-Erling Smørgrav #else 53*fb3ef04dSDag-Erling Smørgrav #error FOOB multiply 2 is not 84 54*fb3ef04dSDag-Erling Smørgrav #endif 55*fb3ef04dSDag-Erling Smørgrav 56*fb3ef04dSDag-Erling Smørgrav #if (FOOB / 2) == 21 foo9()57*fb3ef04dSDag-Erling Smørgravint foo9() { return 0; } 58*fb3ef04dSDag-Erling Smørgrav #else 59*fb3ef04dSDag-Erling Smørgrav #error FOOB divided 2 is not 21 60*fb3ef04dSDag-Erling Smørgrav #endif 61*fb3ef04dSDag-Erling Smørgrav 62*fb3ef04dSDag-Erling Smørgrav #if (FOOB % FOO) == 0 foo10()63*fb3ef04dSDag-Erling Smørgravint foo10() { return 0; } 64*fb3ef04dSDag-Erling Smørgrav #else 65*fb3ef04dSDag-Erling Smørgrav #error FOOB modulo FOO is not 0 66*fb3ef04dSDag-Erling Smørgrav #endif 67*fb3ef04dSDag-Erling Smørgrav 68*fb3ef04dSDag-Erling Smørgrav #if ~(FOOB) == -43 foo11()69*fb3ef04dSDag-Erling Smørgravint foo11() { return 0; } 70*fb3ef04dSDag-Erling Smørgrav #else 71*fb3ef04dSDag-Erling Smørgrav #error bitwise-not FOOB is not -43 72*fb3ef04dSDag-Erling Smørgrav #endif 73*fb3ef04dSDag-Erling Smørgrav 74*fb3ef04dSDag-Erling Smørgrav #if -(FOOB) == -42 foo12()75*fb3ef04dSDag-Erling Smørgravint foo12() { return 0; } 76*fb3ef04dSDag-Erling Smørgrav #else 77*fb3ef04dSDag-Erling Smørgrav #error negate FOOB is not -42 78*fb3ef04dSDag-Erling Smørgrav #endif 79*fb3ef04dSDag-Erling Smørgrav main()80*fb3ef04dSDag-Erling Smørgravint main() 81*fb3ef04dSDag-Erling Smørgrav { 82*fb3ef04dSDag-Erling Smørgrav foo1(); 83*fb3ef04dSDag-Erling Smørgrav foo2(); 84*fb3ef04dSDag-Erling Smørgrav foo3(); 85*fb3ef04dSDag-Erling Smørgrav foo4(); 86*fb3ef04dSDag-Erling Smørgrav foo5(); 87*fb3ef04dSDag-Erling Smørgrav foo6(); 88*fb3ef04dSDag-Erling Smørgrav foo7(); 89*fb3ef04dSDag-Erling Smørgrav foo8(); 90*fb3ef04dSDag-Erling Smørgrav foo9(); 91*fb3ef04dSDag-Erling Smørgrav foo10(); 92*fb3ef04dSDag-Erling Smørgrav foo11(); 93*fb3ef04dSDag-Erling Smørgrav foo12(); 94*fb3ef04dSDag-Erling Smørgrav } 95