C89 (aka C90), sometimes incorrectly referred to as ANSI C, is the first standard for the C programming language ratified in 1989 as ANSI X3.159-1989. The C90 refers to the same standard as ratified by the International Organization for Standardization a year later, known as ISO/IEC 9899:1990. Note that the C90 standard is the same as the C89 one with only changes in the formatting and section numbering.
For a long period of time, the only authoritative reference to the C programming language was the The C Programming Language book, written by Brian W. Kernighan and Dennis M. Ritchie. The American National Standards Institute formed the X3J11 committee in 1983. The committee was charted to produce a formal specification for the C programming language. In 1989, ANSI completed the standard and ratified it as ANSI X3.159-1989, also known as C89. The following year ISO ratified the very same standard, with a few formatting and section renumbering. The ISO version of the standard is known as C90. In 1994 an amendment, commonly known as Normative Addendum 1 to the C89 standard was added.
C89 introduced the
__STDC__ predefined macro to detect standard C compilers. C90 also introduced the
#if __STDC__ /* C89 */ #if __STDC_VERSION__ /* C90 */ #end #endif
Support for C89 is almost universal. Any program conforming to the C89 standard should compile and work exactly the same on virtually any platform with a conforming C89 implementation. Because any later version of the C standard is almost completely backwards compatible with earlier versions, a C89 conforming program should also generally be forward compatible.
|C89 Compiler Support|
|Compiler Name||Support Level||Enforcement Switch||Note|
|TCC||Complete||No option to enforce; will compile C99 as well|
|Visual C++||Complete||/Za||Can be set by setting Disable Language Extensions to true.|