added UNREACHABLE macro to inform (portably) the compiler that code is unreachable.
renamed some preprocessor symbols.