C99 es el estándar del lenguaje de programación C. Definido en ISO/IEC 9899:1999, la versión actual es ISO/IEC 9899:1999/Cor 3:2007 con fecha 2007-11-15. Es un desarrollo del estándar C90 .
Después del proceso de estandarización de ANSI, la especificación del lenguaje C se mantuvo relativamente sin cambios durante algún tiempo, mientras que C++ siguió evolucionando, especialmente durante su estandarización. La enmienda regulatoria 1 creó un nuevo estándar de lenguaje C en 1995 , pero solo en términos de corregir algunos detalles del estándar C89 y agregar más soporte para juegos de caracteres internacionales. Sin embargo, la norma se revisó nuevamente a fines de la década de 1990, lo que condujo a la publicación de ISO/IEC 9899:1999 en 1999. Este estándar a menudo se denomina "C99". Fue adoptado como estándar ANSI en mayo de 2000. El estándar internacional C es mantenido por el grupo de trabajo ISO/IEC JTC1/SC22 /WG14 .
Se han agregado varias características nuevas a C99, muchas de las cuales ya se han implementado como extensiones en algunos compiladores.
C99 es en su mayoría compatible con versiones anteriores de C90, pero también es más rígido en algunos casos. En particular, una declaración sin una especificación de tipo ya no implica una especificación de tipo implícita int. El Comité de Normas de C decidió que sería más importante para los compiladores detectar la omisión involuntaria de la designación de tipo que manejar "silenciosamente" el código antiguo que dependía de la designación de tipo implícita int. En la práctica, los compiladores podían detectar una omisión, pero también asumían que lo era inty continuaban compilando el programa.
GCC y otros compiladores de C admiten muchas de las funciones del estándar C99. Sin embargo, ha habido una falta de soporte para el estándar por parte de los principales proveedores de herramientas de desarrollo, como Microsoft y Borland , que se han centrado principalmente en el lenguaje C++, ya que C++ proporciona una funcionalidad similar a la proporcionada por las innovaciones del estándar.
GCC, a pesar de su soporte extendido para C99, todavía no es una implementación totalmente compatible: algunas funciones no están implementadas o funcionan incorrectamente. [una]
Según Sun Microsystems , Sun Studio 9 y posterior (que está disponible para descarga gratuita) tiene certificación C99 para procesadores UltraSPARC, Intel x86, AMD 64. [2] También cuenta con certificación IBM XL C/C++ para procesadores Power PC. Hay traductores jurados de otras empresas. El intérprete de Ch C es compatible con las funciones principales de C99 [3] y está disponible gratuitamente en versiones para Windows, Linux, Mac OS X, Solaris, QNX y FreeBSD.
La macro estándar __STDC_VERSION__definida con el valor 199901Lindica que la compatibilidad con C99 está disponible. Al igual que una macro __STDC__para C90, una macro __STDC_VERSION__se puede usar para escribir código que se compilará de manera diferente en los compiladores C90 y C99. A continuación se muestra un ejemplo que utiliza una macro para __STDC_VERSION__verificar si la inline palabra clave es .
#if __STDC_VERSION__ >= 199901L /* "en línea" es una palabra clave */ #else #define en línea /* nada */ #terminara siDespués de la ratificación del estándar C99, el grupo de trabajo de estándares produjo un informe técnico que contiene las siguientes mejoras: soporte mejorado para el procesamiento en línea, tipos de datos de caracteres adicionales (soporte para Unicode ), funciones de biblioteca con validación mejorada . Se continúa trabajando en informes técnicos relacionados con números de punto flotante decimal, funciones especiales matemáticas adicionales y funciones adicionales para trabajar con memoria asignada dinámicamente . Los comités de estándares de C y C++ están trabajando juntos en las especificaciones para la programación de subprocesos múltiples.
En 2007, se comenzó a trabajar en la preparación de una nueva revisión del estándar del lenguaje C, informalmente llamado "C1 x ". El Comité de Normas C ha apoyado una estrategia que debe limitar la inclusión de nuevos desarrollos que no están "probados" por las implementaciones existentes.
Lo más probable es que la función estándar gets, que quedó obsoleta oficialmente debido a numerosos informes de problemas relacionados con interfaces diseñadas de forma insegura, no se incluirá en la próxima revisión del estándar del lenguaje C.
lenguaje de programación c | |
---|---|
compiladores |
|
bibliotecas | |
Peculiaridades | |
algunos descendientes | |
C y otros lenguajes |
|
Categoría:Lenguaje de programación C |