|
|
In order to match existing implementations, the ANSI C committee had to choose names like printf and NULL; to have done otherwise would have disqualified virtually all existing C programs from conformance, and would obviously run counter to their charter to standardize existing practice. However, each such name reduced the set of names available for free use in C programs.
On the other hand, before standardization, implementors felt free to add both new keywords to their compilers and names to headers. This meant that no program could be guaranteed to compile from one release to another, let alone port from one vendor's implementation to another.
Thus the Committee made a hard decision: to restrict all conforming implementations from including any extra names, except those with certain forms. It is this decision, more than any other, that will cause most C compilation systems to be almost conforming. Nevertheless, the Standard contains 32 keywords and almost 250 names in its headers, none of which necessarily follow any particular naming pattern.