Todo lo que precede a la estandarización se llama generalmente "K&R C", en honor al famoso libro , con Dennis Ritchie, el inventor del lenguaje C, como uno de los autores. Este fue "el lenguaje C" de 1972 a 1989.
El primer estándar C fue lanzado en 1989 a nivel nacional en EE. UU., Por su instituto nacional de estándares ANSI. Esta versión se llama C89 o ANSI-C. De 1989 a 1990 este fue "el lenguaje C".
Al año siguiente, la norma estadounidense fue aceptada internacionalmente y publicada por ISO (ISO 9899: 1990). Esta versión se llama C90. Técnicamente, es el mismo estándar que C89 / ANSI-C. Formalmente, reemplazó a C89 / ANSI-C, haciéndolos obsoletos. De 1990 a 1999, C90 fue "el lenguaje C".
Tenga en cuenta que desde 1989, ANSI no ha tenido nada que ver con el lenguaje C. Los programadores que todavía hablan de "ANSI C" generalmente no tienen ni idea de lo que significa. ISO "posee" el lenguaje C, a través del estándar ISO 9899.
En 1995 se publicó una actualización menor, a la que a veces se hace referencia como "C95". Esta no fue una revisión importante, sino más bien una enmienda técnica formalmente denominada ISO / IEC 9899: 1990 / Amd.1: 1995. El principal cambio fue la introducción de un amplio soporte de caracteres.
En 1999, la norma C pasó por una importante revisión (ISO 9899: 1999). Esta versión del estándar se llama C99. De 1999 a 2011, este fue "el lenguaje C".
En 2011, la norma C se volvió a cambiar (ISO 9899: 2011). Esta versión se llama C11. Varias nuevas características como _Generic
, _Static_assert
y soporte para hilos se añadieron a la lengua. La actualización se centró mucho en la secuenciación de expresiones, multiprocesamiento y de múltiples núcleos. De 2011 a 2017, este fue "el lenguaje C".
En 2017, se revisó C11 y se solucionaron varios informes de defectos. Este estándar se llama informalmente C17 y se publicó como ISO 9899: 2018. No contiene nuevas funciones, solo correcciones. Es la versión actual del lenguaje C.
"C99 estricto" probablemente se refiere a una configuración del compilador que obliga a un compilador a seguir el estándar al pie de la letra. Hay un término que se ajusta a la implementación en el estándar C. Esencialmente significa: "este compilador realmente implementa el lenguaje C correctamente". Los programas que implementan el lenguaje C correctamente se denominan formalmente programas estrictamente conformes .
"GNU C" puede significar dos cosas. O el compilador de C que viene como parte de la Colección de compiladores GNU (GCC). O puede significar la configuración predeterminada no estándar que usa el compilador de GCC C. Si compila con gcc program.c
, no lo hace de acuerdo con el estándar C, sino con una configuración GNU no estándar, que puede denominarse "GNU C". Por ejemplo, todo el kernel de Linux está hecho en GNU C no estándar y no en C.