C99

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 .

Historia

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 .

Nuevas funciones

Se han agregado varias características nuevas a C99, muchas de las cuales ya se han implementado como extensiones en algunos compiladores.

Compatible con versiones anteriores con C90

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.

Compatibilidad con compiladores comunes

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.

Detección de versión

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 si

Instrucciones para el desarrollo de la norma

Despué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.

Véase también

  • ANSI C
  • C11  es la siguiente especificación de lenguaje

Notas

  1. Estado de compatibilidad de funciones de GCC C99 (enlace descendente) . fundación de software libre inc. (22 de noviembre de 2007). Fecha de acceso: 9 de enero de 2008. Archivado desde el original el 19 de marzo de 2012. 
  2. Sun Studio 12: C Compiler 5.9 Léame (enlace descendente) . Sun Microsystems Inc. (31 de mayo de 2007). Fecha de acceso: 9 de enero de 2008. Archivado desde el original el 19 de marzo de 2012. 
  3. Características del intérprete C/C++ Ch C99 (enlace descendente) . SoftIntegration Inc. (15 de febrero de 2008). Consultado el 15 de febrero de 2008. Archivado desde el original el 19 de marzo de 2012. 

Fuentes adicionales