Your "char" in a preprocessor directive is either a uintmax_t or an intmax_t. Either way, it's going to end up as #if 128 > 127 or #if 256 > 255 -- so the first case will always end up being included.
So the good solution is make a test that finds it out, for example in configuration script and set proper preprocessor constant and test that constant instead.