C - The ISO Standard - Rationale

Peter Kitson

ISBN : -

Order a printed copy of this book from Amazon --UNAVAILABLE--

Cover Design - C - The ISO Standard - Rationale

For your free electronic copy of this book please verify the numbers below. 

(We need to do this to make sure you're a person and not a malicious script)



Sample Chapter From C - The ISO Standard - Rationale
     Copyright © ISO/IEC


This Rationale summarizes the deliberations of INCITS J11 (formerly X3J11 and NCITS J11)
and SC22 WG14, respectively the ANSI Technical Committee and ISO/IEC JTC 1 Working
Group, charged with revising the International Standard for the C programming language; and it
retains much of the text of the Rationale for the original ANSI Standard (ANSI X3.159-1989, the
so-called “C89”). This document has been published along with the draft Standard to assist the
process of formal public review.

There have been several changes to the Standard already. C89 was quickly adopted as an
International Standard (ISO/IEC 9899:1990, commonly called “C90”), with changes to clause
and subclause numbering to conform to ISO practices. Since then, there have been two
Technical Corrigenda and one Amendment, AMD1; and those three documents, together with
C90 itself, compose the International Standard, (“C95”). The current C Standard was adopted in
1999 and is called “C99.”

J11 represents a cross-section of the C community in the United States: it consists of about
twenty or thirty members representing hardware manufacturers, vendors of compilers and other
software development tools, software designers, consultants, academics, authors, applications
programmers, and others. WG14’s participants are representatives of national standards bodies
such as AFNOR, ANSI, BSI, DIN and DS. In this Rationale, the unqualified “Committee” refers
to J11 and WG14 working together to create C99.

Upon publication of the new Standard, the primary role of the Committee will be to offer
interpretations of the Standard. It will consider and respond to all correspondence it receives.
The Committee’s overall goal was to develop a clear, consistent, and unambiguous Standard for
the C programming language which codifies the common, existing definition of C and which
promotes the portability of user programs across C language environments.

The original X3J11 charter clearly mandated codifying common existing practice, and the C89
Committee held fast to precedent wherever that was clear and unambiguous. The vast majority of
the language defined by C89 was precisely the same as defined in Appendix A of the first edition
of The C Programming Language by Brian Kernighan and Dennis Ritchie, and as was
implemented in almost all C translators of the time. (That document is hereinafter referred to as

K&R was not the only source of “existing practice.” Much work had been done over the years to
improve the C language by addressing its weaknesses, and the C89 Committee formalized
enhancements of proven value which had become part of the various dialects of C. This practice
has continued in the present Committee.

Existing practice, however, has not always been consistent. Various dialects of C have
approached problems in different and sometimes diametrically opposed ways. This divergence
has happened for several reasons. First, K&R, which once served as the language specification
for almost all C translators, is imprecise in some areas (thereby allowing divergent
interpretations), and it does not address some issues (such as a complete specification of a