
| Main index | Section7 | Options |
In 1972 Dennis M. Ritchie worked out the C programming language forfurther development of the UNIX operating system.The idea was to implement only the C compiler for differentplatforms, and implement most part of the operating systemin the new programming language to simplify the portability betweendifferent architectures.It follows that C is very eligible for (but not limited to) writingoperating systems and low-level applications.
The C language did not have a specification or standardized version fora long time.It went through a lot of changes and improvements for ages.In 1978, Brian W. Kernighan and Dennis M. Ritchie published thefirst book about C under the title "The C Programming Language".We can think of this book as the first specification of the language.This version is often referred as K&R C after the names of the authors.Sometimes it is referred as C78, as well, after the publishing year ofthe first edition of the book.
It is important to notice, that the instruction set of the language islimited to the most fundamental elements for simplicity.Handling of the standard I/O and such common functions are implemented inthe libraries shipped with the compiler.As these functions are also widely used, it was demanded to include intothe description what requisites the library should conform to, not juststrictly the language itself.Accordingly, the aforementioned standards cover the library elements, as well.The elements of this standard library is still not enough for morecomplicated tasks.In this case the provided system calls of the given operating system can beused.To not lose the portability by using these system calls, the POSIX(Portable Operating System Interface) standard evolved.It describes what functions should be available to keep portability.Note, that POSIX is not a C standard, but an operating system standardand thus is beyond the scope of this manual.The standards discussed below are all C standards and only coverthe C programming language and the accompanying library.All listed improvements for each standard edition are taken from the officialstandard drafts.For further details, check the publicly available drafts orpurchase the published standards — from either ISO or IEC resources.
After the publication of the book mentioned before,the American National Standards Institute (ANSI) started to work onstandardizing the language, and they announced ANSI X3.159-1989in 1989.It is usually referred to as ANSI C or C89.The main difference in this standard were the function prototypes,which is a new way of declaring functions.With the old-style function declarations, the compiler was unable tocheck the sanity of the actual parameters at a function call.The old syntax was highly error-prone because incompatible parameterswere hard to detect in the program code and the problem only showed upat run-time.
In 1990, the International Organization for Standardization (ISO) adoptedthe ANSI standard as ISO/IEC 9899:1990 in 1990.This is also referred to as ISO C or C90.It only contains negligible minor modifications against ANSI C,so the two standards often considered to be fully equivalent.This was a very important milestone in the history of the C language, but thedevelopment of the language did not stop.
The ISO C standard was later extended with an amendment asISO/IEC 9899/AMD1 in 1995.This contained, for example, the wide-character support in <wchar.h> and<wctype.h>, and also restricted character set support via diagraphs and<iso646.h>.This amendment is usually referred to as C95.Two technical corrigenda were also published: Technical Corrigendum 1 asISO/IEC 9899/COR1 in 1994 and Technical Corrigendum 2 as ISO/IEC 9899/COR2in 1996.The continuous development and growth made it necessary to work out a newstandard, which contains the new features and fixes the known defects anddeficiencies of the language.As a result, ISO/IEC 9899:1999 was born in 1999 as the second edition of thestandard.Similarly to the other standards, this is informally named after thepublication year as C99.The improvements include (but are not limited to) the following:
Later in 2011, the third edition of the standard, ISO/IEC 1989:2011,commonly referred to as C11 (formerly C1x), came out and replaced thesecond edition by ISO/IEC 9899:1999/COR1:2001, ISO/IEC 9899:1999/COR2:2004,and ISO/IEC 9899:1999/COR3:2007.The improvements include (but are not limited to) the following:
C11 was later superseded by ISO/IEC 9899:2018, also known as C17 which wasprepared in 2017 and published in June 2018 as the fourth edition.It incorporates the Technical Corrigendum 1 (ISO/IEC 9899:2011/COR1:2012)which was published in 2012.It addressed defects and deficiencies in C11 without introducing new features,only corrections and clarifications.Since there were no major changes in C17, the current standard forProgramming Language C, is still considered C11 — ISO/IEC 9899:2011, published2011-12-08.
The next standard, the fifth, is currently referred to as C2x and is scheduledto be adopted by the end of 2021, with a publication date of 2022.When published, it will cancel and replace the fourth edition, ISO/IEC9899:2018.
Some useful features have been provided as extensions by some compilers, butthey cannot be considered as standard features.
ISO/IEC JTC1/SC22/WG14 committee is responsible for the ISO/IEC 9899,C Standard.
,X3.159-1989 (aka C89 or ANSI C),
,9899:1990 (aka C90),
,9899:1990/AMD 1:1995, Amendment 1: C Integrity (aka C95),
,9899:1990/COR 1:1994, Technical Corrigendum 1,
,9899:1990/COR 2:1996, Technical Corrigendum 2,
,9899:1999 (aka C99),
,9899:1999/COR 1:2001, Technical Corrigendum 1,
,9899:1999/COR 2:2004, Technical Corrigendum 2,
,9899:1999/COR 3:2007, Technical Corrigendum 3,
,TR 24731-1:2007 (aka bounds-checking interfaces),
,TS 18037:2008 (aka, embedded C),
,TR 24747:2009 (aka mathematical special functions),
,TR 24732:2009 (aka decimal floating-point),
,TR 24731-2:2010 (aka dynamic allocation functions),
,9899:2011 (aka C11),
,9899:2011/COR 1:2012, Technical Corrigendum 1,
,TS 17961:2013 (aka C secure coding rules),
,TS 18861-1:2014 (aka binary floating-point),
,TS 18861-2:2015 (aka decimal floating-point),
,TS 18861-3:2015 (aka interchange and extended types),
,TS 18861-4:2015 (aka supplementary functions),
,TS 17961:2013/COR 1:2016 (aka C secure coding rules TC1),
,TS 18861-5:2016 (aka supplementary attributes),
,9899:2018 (aka C17),
| C (7) | April 20, 2021 |

| Main index | Section7 | Options |
Please directany comments about this manual page service toBen Bullock.Privacy policy.
| “ | "I liken starting one's computing career with Unix, say as an undergraduate,to being born in East Africa. It is intolerably hot, yourbody is covered with lice and flies, you are malnourished and yousuffer from numerous curable diseases. But, as far as young EastAfricans can tell, this is simply the natural condition and they livewithin it. By the time they find out differently, it is too late. Theyalready think that the writing of shell scripts is a natural act." | ” |
| — Ken Pier, Xerox PARC | ||