// IMPL.h #define TYPE_ABC 0 #define TYPE_XYZ 1 #define TYPE_123 2 int strangecall(int type); // IMPL.c #define ANOTHER_TYPE_CON 1 #define ANOTHER_TYPE_SOL 2 #define ANOTHER_TYPE_ESS 3 int strangecall(int type) { int anothertype; switch(type) { case 0 : anothertype = ANOTHER_TYPE_CON; break; case 1 : anothertype = ANOTHER_TYPE_SOL; break; case 2 : anothertype = ANOTHER_TYPE_ESS; break; default : anothertype = 0; } // compiler makes this, because compiler is smart, even gcc is a littl bit smart anothertype = (0x39>>(type<<1))&3); }