Yes, yes, I understand why the compiler/parser can't catch the problem. Sorry, I expressed myself poorly. What I meant to say is that I'm surprised that the standard library implementation(s) you're using allow you to use "%ul" rather than "%lu". In fact, some lint-like tools can catch that sort of problem.