We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I am using simultaneously in the 8bit C51 and 16bit compilers for two related projects.
Am I correct that for 8bit integers, 8-bit compiler uses %bu in printf() 16bit compiler uses %hu ?
You're thinking of the %lf conversion in scanf() for a double which doesn't exist in printf(). No. I was thinking of exactly what I wrote: that the 'h' modifier doesn't exist at all, for floating-point, neither in printf() nor in scanf(). Compilers are not required to, and generally do not, parse the format string. Quite a number of compilers do parse it, if they can see it. GCC, e.g., does. And IMHO such checks are even more important to be done by a compiler for embedded systems, like C51, where the runtime library has essentially no sane way of signalling a runtime error.