Now that the ANSI standard is complete and formally accepted cast in concrete, warts and all the programming community is faced with an interesting and unusual situation. In many ways, Standard C is a significantly different a new language. Yes, Standard C is mostly backward compatible with K&R C, but it's not just a refinement of K&R C. The stronger typing and more complex namespace, the more carefully defined and capable pre-processor, the enhanced types and fully specified library all represent major changes changes that significantly impact coding practice.Unlike other new languages, however, this new language has achieved instant acceptance and instant application. Every serious compiler vendor has released (even in advance of the standard's formal acceptance) Standard C compilers. Literally hundreds of thousands of K&R programmers have suddenly become Standard C programmers except that they haven't really.
We may be writing for a Standard C compiler, but we still aren't Standard C programmers, because we haven't built the experiential base from which coherent Standard C coding practice will emerge. I'm not talking about religious issues e.g. how you indent the code. I'm talking about secular issues i.e. how do you use the token pasting operator to build certain kinds of symbols during the pre-processor phase (see the Reader Response portion of our Question and Answer column in this issue). Or, how can compiler vendors write conforming header files (see P.J. Plauger's Standard C column in this issue). Or, how do you portably create float headers (see Tim Prince's comments in the letters column). We are still struggling to master the syntactic and semantic changes, and have only begun to ask "how do these facilities fit together?"
There are no wise and all-knowing gurus to whom we may turn. While XJ311 created this language, even that august collection of programmers hasn't applied the language long enough and broadly enough to have developed refined answers to very many of the issues of usage. Moreover, to the dismay of many who submitted "requests for clarification", the committee is formally restrained from commenting on matters of coding practice (see P.J. Plauger's Standard C column in the previous issues).
That leaves the task to us the working programmers. If we are to reap the full benefit of Standard C, we must develop a comprehensive body of coding practice the sooner the better.
We can greatly accelerate the process by sharing our individual discoveries. If you find yourself musing that "there must be a way ...", send the question to us perhaps someone else has spotted the trick. If you find some neat way to exploit the new Standard C features, write and share it. If you realize that certain features combine elegantly in unobvious ways write and share it. Whatever you discover about Standard C, don't assume that it's common knowledge. This is a new language and we're all discovering how to use it. Your contribution, even if it's only a paragraph, is important to other programmers struggling to domesticate this new Standard C.
Write it down. Send it to me. I'll find a place to print it.
Sincerely yours,
Robert Ward
Editor/Publisher