- ANSI C
-
ANSI C es un estándar publicado por el Instituto Nacional Estadounidense de Estándares (ANSI), para el lenguaje de programación C. Se recomienda a los desarrolladores de software en C que cumplan con los requisitos descritos en el documento para facilitar así la portabilidad del código.
Contenido
Historia de ANSI C e ISO C
El primer estándar que se publicó para C fue el de ANSI, si bien este estándar fue adoptado posteriormente por la International Organization for Standardization (ISO) y revisiones posteriores publicadas por ISO han sido adoptadas por ANSI. El término ANSI C es de uso más frecuente en la industria que ISO C. Un término más neutral es estándar C.
C89
En 1983, el American National Standards Institute creó un comité, el X3J11, para establecer una especificación estándar para C. Tras un largo y arduo proceso, el estándar se terminó en 1989 y se ratificó como ANSI X3.159-1989 "Programming Language C." A esta versión del estándar se le conoce como "ANSI C", o también "C89" (para distinguirla de la C99).
C90
En 1990, el estándar ANSI C (con algunas modificaciones menores) fue adoptado por la International Organization for Standardization bajo la denominación ISO/IEC 9899:1990. A esta versión se le conoce como C90, si bien "C89" y "C90" son, a efectos prácticos, el mismo lenguaje de programación.
C99
En marzo de 2000, ANSI adoptó el estándar ISO/IEC 9899:1999. A este estándar se le conoce como C99, y es el estándar actual para el lenguaje de programación C.
Compatibilidad con algunos compiladores importantes
ANSI C es compatible por casi todos los compiladores, dado que la gran parte del código escrito en C está basado en ANSI C. Se da por hecho que cualquier programa escrito sólo según el estándar C sin dependencia alguna del hardware se compila de forma correcta en cualquier plataforma con una implementación conforme con C. Si no se toman estas medidas, la mayoría de programas sólo podrán compilarse en una plataforma determinada o con un compilador en particular. Por ejemplo, para utilizar bibliotecas no estándar, tales como bibliotecas GUI, o para confiar en atributos específicos del compilador o de una plataforma, tales como el tamaño exacto de determinados tipos de datos y endianness de bytes.
Como detectar la compatibilidad
Para minimizar las diferencias entre C K&R y el estándar ANSI C, puede utilizarse
__STDC__
, el macro ("estándar c") para dividir el código entre secciones ANSI y K&R.#if __STDC__ extern int getopt(int, char * const *, const char *); #else extern int getopt(); #endif
Es preferible utilizar "
#if __STDC__
" como en el ejemplo superior en lugar de "#ifdef __STDC__
" porque algunas implementaciones pueden otorgar a__STDC__
el valor cero para indicar que no son compatibles con ANSI. "#if
" se encargará de sustituir por cero (0
) todos aquellos identificadores que no pudieron ser sustituidos por un macro. De esta forma incluso si el macro __STDC__ no está definido "#if
" funcionará.En el ejemplo de arriba se ha utilizado un prototipo en la declaración de una función para implementaciones compatibles con ANSI, mientras que una declaración obsoleta -que no es ningún prototipo- se usa de forma diferente. Aunque son compatibles con C99 y C90, no se recomienda su uso.
Compiladores compatibles con ANSI C
- GCC
- Microsoft Visual C++ (C90. Algunas características de C99) (MSVC no es compatible con C99[1] )
- ARM RealView
Referencias
- Este artículo fue creado a partir de la traducción del artículo ANSI C de la Wikipedia en inglés, concretamente de esta versión, bajo licencia Creative Commons Atribución Compartir Igual 3.0 y GFDL.
Enlaces externos
- ISO C working group
- Draft ANSI C Standard (ANSI X3J11/88-090) (May 13, 1988), Third Public Review
- Draft ANSI C Rationale (ANSI X3J11/88-151) (Nov 18, 1988)
- Schreiner, Axel-Tobias (Hanser). Object oriented programming with ANSI-C. Hanser. ISBN 3-446-17426-5. http://hdl.handle.net/1850/8544.
- «ISO/IEC 9899:1999 Programming Languages -- C». American National Standards Institute.
- «ANSI Standards Action Vol. 36, #48». American National Standards Institute (02-12-2005).
Referencias
Categorías:- Lenguaje de programación C
- Estándares de informática y telecomunicaciones
- Estándares ANSI
Wikimedia foundation. 2010.