Está en la página 1de 3

El estndar ANSI

La biblioteca estndar de ANSI C consta de 24 ficheros cabecera que pueden ser incluidos en un proyecto de programacin con una simple directiva. Cada cabecera contiene la declaracin de una o ms funciones, tipos de datos y macros. En comparacin con otros lenguajes de programacin (como por ejemplo Java) la biblioteca estndar es muy pequea, sta proporciona un conjunto bsico de funciones matemticas, de tratamiento de cadenas, conversiones de tipo y entrada/salida por consola o por ficheros. No se incluyen, ni un conjunto de tipos de datos contenedores bsicos (listas, pilas, colas, ...), ni herramientas para crear una interfaz grfica de usuario (GUI), ni operaciones para trabajar en red, ni otras funcionalidades que lenguajes como C++ o Java incorporan de manera estndar. La principal ventaja del reducido tamao de la biblioteca estndar de C es que construir un entorno de trabajo en ANSI C es muy fcil y, en consecuencia, portar un programa en ANSI C de una plataforma a otra es relativamente sencillo. Se han desarrollado muchas otras bibliotecas para proporcionar una funcionalidad equivalente a la de otros lenguajes de programacin. Por ejemplo, el proyecto de desarrollo del entorno de escritorio de GNOME cre las bibliotecas GTK+ y GLib con funcionalidades para desarrollar y trabajar con interfaces grficas de usuario. La variedad de bibliotecas disponibles ha hecho que, a lo largo de la historia, haya quedado demostrada la superioridad de algunas de estas herramientas. El gran inconveniente es que a menudo no funcionan especialmente bien en conjunto, normalmente son los propios programadores familiarizados con las diferentes bibliotecas quienes consiguen sacarles el mximo partido, aunque diferentes partes de ellas puedan estar disponibles en cualquier plataforma.

Archivos de cabeceras de la biblioteca ANSI C


<assert.h> Contiene la macro assert (asercin), utilizada para detectar errores lgicos y otros tipos de fallos en la depuracin de un programa. Conjunto de funciones para manipular nmeros complejos (nuevo en C99). Contiene funciones para clasificar caracteres segn sus tipos o para convertir entre maysculas y minsculas independientemente del conjunto de caracteres (tpicamente ASCII o alguna de sus extensiones). Para analizar los cdigos de error devueltos por las funciones de biblioteca. Para controlar entornos en coma flotante (nuevo en C99). Contiene la definicin de constantes que especifican ciertas propiedades de la biblioteca de coma flotante, como la diferencia mnima entre dos nmeros en coma flotante (_EPSOLON), el nmero mximo de dgitos de precisin (_DIG), o el rango de valores que se pueden representar (_MIN, _MAX). Para operaciones de conversin con precisin entre tipos enteros (nuevo en C99). Para utilizar los conjuntos de caracteres ISO 646 (nuevo en NA1). Contiene la definicin de constantes que especifican ciertas propiedades de los tipos enteros, como rango de valores que se pueden representar (_MIN, _MAX). Para la funcin setlocale () y las constantes relacionadas. Se utiliza para seleccionar el entorno local apropiado (configuracin regional). Contiene las funciones matemticas comunes. Declara las macros setjmp y longjmp para proporcionar saltos de flujo de control de programa no locales. Para controlar algunas situaciones excepcionales como la divisin por cero.

<complex.h> <ctype.h>

<errno.h> <fenv.h> <float.h>

<inttypes.h> <iso646.h> <limits.h>

<locale.h>

<math.h> <setjmp.h> <signal.h>

<stdarg.h> <stdbool.h> <stdint.h> <stddef.h> <stdio.h> <stdlib.h>

posibilita el acceso a una cantidad variable de argumentos pasados a una funcin. Para el tipo booleano (nuevo en C99). Para definir varios tipos enteros (nuevo en C99). Para definir varios tipos de macros de utilidad. Proporciona el ncleo de las capacidades de entrada/salida del lenguaje C (incluye la venerable funcin printf). Para realizar ciertas operaciones como conversin de tipos, generacin de nmeros pseudo-aleatorios, gestin de memoria dinmica, control de procesos, funciones de entorno, de sealizacin (??), de ordenacin y bsqueda. Para manipulacin de cadenas de caracteres. Contiene funcionalidades matemticas de tipo genrico (type-generic) (nuevo en C99). Para tratamiento y conversin entre formatos de fecha y hora. Para manipular flujos de datos anchos y varias clases de cadenas de caracteres anchos (2 o ms bytes por carcter), necesario para soportar caracteres de diferentes idiomas (nuevo en NA1). Para clasificar caracteres anchos (nuevo en NA1).

<string.h> <tgmath.h> <time.h> <wchar.h>

<wctype.h>

ANSI C
ANSI C es un estndar publicado por el Instituto Nacional Estadounidense de Estndares (ANSI), para el lenguaje de programacin 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 cdigo.

Historia de ANSI C e ISO C


El primer estndar que se public para C fue el de ANSI, si bien este estndar fue adoptado posteriormente por la International Organization for Standardization (ISO) y revisiones posteriores publicadas por ISO han sido adoptadas por ANSI. El trmino ANSI C es de uso ms frecuente en la industria que ISO C. Un trmino ms neutral es estndar C.

C89
En 1983, el American National Standards Institute cre un comit, el X3J11, para establecer una especificacin estndar para C. Tras un largo y arduo proceso, el estndar se termin en 1989 y se ratific como ANSI X3.159-1989 "Programming Language C." A esta versin del estndar se le conoce como "ANSI C", o tambin "C89".

C90
En 1990, el estndar ANSI C (con algunas modificaciones menores) fue adoptado por la International Organization for Standardization bajo la denominacin ISO/IEC 9899:1990. A esta versin se le conoce como C90, si bien "C89" y "C90" son, a efectos prcticos, el mismo lenguaje de programacin.

C99
En marzo de 2000, ANSI adopt el estndar ISO/IEC 9899:1999. A este estndar se le conoce como C99.

C11
"C11" es el nuevo estndar para el lenguaje de programacin C.

Compatibilidad con algunos compiladores importantes


ANSI C es compatible por casi todos los compiladores, dado que la gran parte del cdigo escrito en C est basado en ANSI C. Se da por hecho que cualquier programa escrito slo segn el estndar C sin dependencia alguna del hardware se compila de forma correcta en cualquier plataforma con una implementacin conforme con C. Si no se toman estas medidas, la mayora de programas slo podrn compilarse en una plataforma determinada o con un compilador en particular. Por ejemplo, para utilizar bibliotecas no estndar, tales como bibliotecas GUI, o para confiar en atributos especficos del compilador o de una plataforma, tales como el tamao exacto de determinados tipos de datos y endianness de bytes.

Como detectar la compatibilidad


Para minimizar las diferencias entre C K&R y el estndar ANSI C, puede utilizarse __STDC__, el macro ("estndar c") para dividir el cdigo 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 declaracin de una funcin para implementaciones compatibles con ANSI, mientras que una declaracin obsoleta -que no es ningn 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 caractersticas de C99) (MSVC no es compatible con C991 ) ARM RealView

También podría gustarte