So, you have to check every compiler and every compiler version to see what the signedness of char is. That is not good in these days of UTF-8.
Not really. You can usually write code that doesn't care whether plain char is signed or unsigned. And if it matters, you can check whether CHAR_MIN==0.
This evolved from systems like the PDP-11 where character values ranged from 0 to 127, so the signedness of plain char didn't matter much.
It's annoying that, in many implementations, UTF-8 strings can contain elements with negative values (negative character values rarely make sense), but in practice it doesn't cause many problems.
IMHO it would be cleaner to require plain char to be unsigned, but I don't see that happening.
-- Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com void Void(void) { Void(); } /* The recursive call of the void */