fbpx
Wikipedia

Biblioteca estándar de C

La biblioteca estándar de C, o libc (no confundir con stdlib.h); es una recopilación de archivos de cabecera y bibliotecas con rutinas, estandarizadas por un comité de la Organización Internacional para la Estandarización (ISO), que implementan operaciones comunes, tales como las de entrada y salida o el manejo de cadenas. A diferencia de otros lenguajes como COBOL, Fortran, o PL/1, C no incluye palabras clave para estas tareas, por lo que prácticamente todo programa implementado en C se basa en la biblioteca estándar para funcionar.

Diseño Editar

El nombre y las características de cada función, el prototipo, así como la definición de algunos tipos de datos y macros, se encuentran en un fichero denominado archivo de cabecera (con extensión ".h"), pero la implementación real de las funciones están separadas en un archivo de la biblioteca. La denominación y el ámbito de las cabeceras se han convertido en comunes, pero la organización de las bibliotecas sigue siendo diversa, ya que éstas suelen distribuirse con cada compilador. Dado que los compiladores de C, a menudo, ofrecen funcionalidades adicionales que no están especificados en el ANSI C, la biblioteca de un compilador no siempre es compatible con el estándar ni con las bibliotecas de otros compiladores.

Calidad del diseño Editar

Está demostrado que la mayor parte de la biblioteca estándar de C ha sido bien diseñada, aunque se ha comprobado que algunas partes también son fuente de errores; funciones para entrada de cadenas como gets() o scanf(), producen desbordamientos de buffer, y muchas guías de programación recomiendan evitar su uso. La función strtok() presenta otra singularidad, está diseñada para ser utilizada como un analizador léxico rudimentario, pero resulta difícil de utilizar además de ser muy frágil.

Historia Editar

El lenguaje de programación C, antes de normalizarse, no disponía de funcionalidades tales como operaciones de entrada/salida (a diferencia de lenguajes tradicionales como COBOL y FORTRAN). Con el tiempo, las comunidades de usuarios de C fueron compartiendo ideas, así como las implementaciones de lo que ahora se denomina las bibliotecas estándar de C para proporcionar esas funcionalidades. Muchas de estas ideas se incorporaron finalmente en la definición estandarizada del lenguaje.

Tanto Unix como C fueron creados en los Laboratorios Bell de AT&T a finales de la década de los 60 y principios de los 70. Fue en los 70 cuando el lenguaje de programación C acrecentó su popularidad. Muchas organizaciones y universidades crearon sus propias versiones del lenguaje para sus propios proyectos. A comienzos de los 80 se evidenciaron los problemas de compatibilidad derivados de la existencia de las múltiples implementaciones del lenguaje. En 1983 el Instituto Nacional Estadounidense de Estándares (ANSI, de las siglas en inglés de American National Standards Institute) creó un comité para establecer una especificación estándar del lenguaje conocida como ANSI C. Este trabajo culminó con la creación del llamado estándar C89 en 1989. Una parte del estándar resultante fue un conjunto de bibliotecas de software denominado 'bibliotecas estándar de ANSI C.

Posteriores versiones del estándar C han añadido algunos nuevos ficheros cabecera a la biblioteca:

  • Las cabeceras <iso646.h>, <wchar.h> y <wctype.h> fueron añadidas con Normativa Addendum 1 (abreviado NA1), y fueron ratificadas por el estándar en 1995.
  • Las cabeceras <complex.h>, <fenv.h>, <inttypes.h>, <stdbool.h>, <stdint.h> y <tgmath.h>. fueron añadidas en 1999 con la revisión C99 del estándar.

El soporte de estas nuevas extensiones varía según implementaciones.

El estándar ANSI Editar

La biblioteca estándar de ANSI C consta de 24 ficheros cabecera que pueden ser incluidos en un proyecto de programación con una simple directiva. Cada cabecera contiene la declaración de una o más funciones, tipos de datos y macros.

En comparación con otros lenguajes de programación (como por ejemplo Java) la biblioteca estándar es muy pequeña, ésta proporciona un conjunto básico de funciones matemáticas, 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 básicos (listas, pilas, colas, ...), ni herramientas para crear una interfaz gráfica de usuario (GUI), ni operaciones para trabajar en red, ni otras funcionalidades que lenguajes como C++ o Java incorporan de manera estándar. La principal ventaja del reducido tamaño de la biblioteca estándar de C es que construir un entorno de trabajo en ANSI C es muy fácil 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 programación. 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 gráficas 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 máximo partido, aunque diferentes partes de ellas puedan estar disponibles en cualquier plataforma.

Archivos de cabeceras de la biblioteca ANSI C Editar

<assert.h> Contiene la macro assert (aserción), utilizada para detectar errores lógicos y otros tipos de fallos en la depuración de un programa.
<complex.h> Conjunto de funciones para manipular números complejos (nuevo en C99).
<ctype.h> Contiene funciones para clasificar caracteres según sus tipos o para convertir entre mayúsculas y minúsculas independientemente del conjunto de caracteres (típicamente ASCII o alguna de sus extensiones).
<errno.h> Para analizar los códigos de error devueltos por las funciones de biblioteca.
<fenv.h> Para controlar entornos en coma flotante (nuevo en C99).
<float.h> Contiene la definición de constantes que especifican ciertas propiedades de la biblioteca de coma flotante, como la diferencia mínima entre dos números en coma flotante (_EPSOLON), el número máximo de dígitos de precisión (_DIG), o el rango de valores que se pueden representar (_MIN, _MAX).
<inttypes.h> Para operaciones de conversión con precisión entre tipos enteros (nuevo en C99).
<iso646.h> Para utilizar los conjuntos de caracteres ISO 646 (nuevo en NA1).
<limits.h> Contiene la definición de constantes que especifican ciertas propiedades de los tipos enteros, como rango de valores que se pueden representar (_MIN, _MAX).
<locale.h> Para la función setlocale() y las constantes relacionadas. Se utiliza para seleccionar el entorno local apropiado (configuración regional).
<math.h> Contiene las funciones matemáticas comunes.
<setjmp.h> Declara las macros setjmp y longjmp para proporcionar saltos de flujo de control de programa no locales.
<signal.h> Para controlar algunas situaciones excepcionales como la división por cero.
<stdarg.h> Posibilita el acceso a una cantidad variable de argumentos pasados a una función.
<stdbool.h> Para el tipo booleano (nuevo en C99).
<stdint.h> Para definir varios tipos enteros (nuevo en C99).
<stddef.h> Para definir varios tipos de macros de utilidad.
<stdio.h> Proporciona el núcleo de las capacidades de entrada/salida del lenguaje C (incluye la venerable función printf).
<stdlib.h> Para realizar ciertas operaciones como conversión de tipos, generación de números pseudo-aleatorios, gestión de memoria dinámica, control de procesos, funciones de entorno, de señalización (??), de ordenación y búsqueda.
<string.h> Para manipulación de cadenas de caracteres.
<tgmath.h> Contiene funcionalidades matemáticas de tipo genérico (type-generic) (nuevo en C99).
<time.h> Para tratamiento y conversión entre formatos de fecha y hora.
<wchar.h> Para manipular flujos de datos anchos y varias clases de cadenas de caracteres anchos (2 o más bytes por carácter), necesario para soportar caracteres de diferentes idiomas (nuevo en NA1).
<wctype.h> Para clasificar caracteres anchos (nuevo en NA1).

La biblioteca estándar de C en C++ Editar

El lenguaje de programación C++ incluye la funcionalidad de la biblioteca estándar ANSI C, pero hace algunas modificaciones como cambiar los nombres de los ficheros de cabecera, de <xxx.h> a <cxxx> (aunque los nombres en estilo C, aun siendo obsoletos, siguen estando disponibles), y ubican todos los identificadores dentro del namespace std.

Bibliotecas de apoyo comunes Editar

Aunque no esté estandarizado, los programas en C pueden depender de una biblioteca de rutinas en tiempo de ejecución que contengan código que el compilador utiliza en tiempo de ejecución. El código que inicializa un proceso por el sistema operativo (por ejemplo, antes de llamar a main()) está implementado en la biblioteca Run-Time (tiempo de ejecución) de C proporcionada por el distribuidor del compilador. El código de la biblioteca Run-Time podría ayudar con otras características de la implementación, como la manipulación de excepciones no capturadas o implementando código para operaciones en coma flotante.

La biblioteca estándar de C solo documenta que las rutinas mencionadas en el presente artículo están disponibles, así como su comportamiento. Ya que la implementación del compilador podría depender de la implementación de estas funciones para estar disponible, es probable que la especificación de las rutinas proporcionada por el fabricante esté empaquetada con la biblioteca estándar de C en el mismo módulo, ya que probablemente, ambas serán necesarias para cualquier programa construido con este compilador.

Aunque a menudo se confunda con la biblioteca estándar de C, debido a este empaquetamiento, la biblioteca Run-Time de C no es una parte normalizada del lenguaje, sino que es una especificación

Funciones incorporadas del compilador Editar

Algunos compiladores (por ejemplo GCC[1]​) proporcionan versiones incorporadas de muchas de las funciones de la biblioteca estándar de C; es decir, la implementación de las funciones está escrita dentro del fichero objeto compilado, y el programa llama a la versión incorporada en vez de, a la función del fichero objeto compartido en la biblioteca de C. Esto reduce el sobrecoste de una llamada a función, especialmente si las llamadas a función son remplazadas con variantes inline, y permiten otras formas de optimización (como cuando el compilados sabe las características de control de flujo de las variantes incorporadas), pero puede causar confusión al depurar (por ejemplo, las versiones incorporadas no pueden ser remplazadas por las variantes instrumentadas).

Biblioteca estándar de POSIX Editar

POSIX (y SUS) especifica una serie de rutinas que deben estar disponibles más allá de la propia biblioteca estándar de C. A menudo éstas se implementan conjuntamente con la biblioteca de C estándar, con distintos niveles de proximidad. Por ejemplo, glibc implementa funciones como fork() dentro de libc.so, pero antes NPTL se fusionó con glibc constituyendo una biblioteca con su propia marca de linkado. A menudo, esta funcionalidad de POSIX se considera una parte de la biblioteca; la propia biblioteca de C puede ser identificada como la biblioteca ANSI C o ISO C.

Véase también Editar

Referencias Editar

  1. Other built-in functions provided by GCC, GCC Manual

Enlaces externos Editar

  • La guía de referencia de la biblioteca de C el 18 de enero de 2015 en Wayback Machine. (en inglés)
  • Microsoft: Las bibliotecas Run-Time de C en MSDN (en inglés)
  •   Datos: Q300914

biblioteca, estándar, biblioteca, estándar, libc, confundir, stdlib, recopilación, archivos, cabecera, bibliotecas, rutinas, estandarizadas, comité, organización, internacional, para, estandarización, implementan, operaciones, comunes, tales, como, entrada, sa. La biblioteca estandar de C o libc no confundir con stdlib h es una recopilacion de archivos de cabecera y bibliotecas con rutinas estandarizadas por un comite de la Organizacion Internacional para la Estandarizacion ISO que implementan operaciones comunes tales como las de entrada y salida o el manejo de cadenas A diferencia de otros lenguajes como COBOL Fortran o PL 1 C no incluye palabras clave para estas tareas por lo que practicamente todo programa implementado en C se basa en la biblioteca estandar para funcionar Indice 1 Diseno 1 1 Calidad del diseno 2 Historia 3 El estandar ANSI 3 1 Archivos de cabeceras de la biblioteca ANSI C 4 La biblioteca estandar de C en C 5 Bibliotecas de apoyo comunes 6 Funciones incorporadas del compilador 7 Biblioteca estandar de POSIX 8 Vease tambien 9 Referencias 10 Enlaces externosDiseno EditarEl nombre y las caracteristicas de cada funcion el prototipo asi como la definicion de algunos tipos de datos y macros se encuentran en un fichero denominado archivo de cabecera con extension h pero la implementacion real de las funciones estan separadas en un archivo de la biblioteca La denominacion y el ambito de las cabeceras se han convertido en comunes pero la organizacion de las bibliotecas sigue siendo diversa ya que estas suelen distribuirse con cada compilador Dado que los compiladores de C a menudo ofrecen funcionalidades adicionales que no estan especificados en el ANSI C la biblioteca de un compilador no siempre es compatible con el estandar ni con las bibliotecas de otros compiladores Calidad del diseno Editar Esta demostrado que la mayor parte de la biblioteca estandar de C ha sido bien disenada aunque se ha comprobado que algunas partes tambien son fuente de errores funciones para entrada de cadenas como gets o scanf producen desbordamientos de buffer y muchas guias de programacion recomiendan evitar su uso La funcion strtok presenta otra singularidad esta disenada para ser utilizada como un analizador lexico rudimentario pero resulta dificil de utilizar ademas de ser muy fragil Historia EditarEl lenguaje de programacion C antes de normalizarse no disponia de funcionalidades tales como operaciones de entrada salida a diferencia de lenguajes tradicionales como COBOL y FORTRAN Con el tiempo las comunidades de usuarios de C fueron compartiendo ideas asi como las implementaciones de lo que ahora se denomina las bibliotecas estandar de C para proporcionar esas funcionalidades Muchas de estas ideas se incorporaron finalmente en la definicion estandarizada del lenguaje Tanto Unix como C fueron creados en los Laboratorios Bell de AT amp T a finales de la decada de los 60 y principios de los 70 Fue en los 70 cuando el lenguaje de programacion C acrecento su popularidad Muchas organizaciones y universidades crearon sus propias versiones del lenguaje para sus propios proyectos A comienzos de los 80 se evidenciaron los problemas de compatibilidad derivados de la existencia de las multiples implementaciones del lenguaje En 1983 el Instituto Nacional Estadounidense de Estandares ANSI de las siglas en ingles de American National Standards Institute creo un comite para establecer una especificacion estandar del lenguaje conocida como ANSI C Este trabajo culmino con la creacion del llamado estandar C89 en 1989 Una parte del estandar resultante fue un conjunto de bibliotecas de software denominado bibliotecas estandar de ANSI C Posteriores versiones del estandar C han anadido algunos nuevos ficheros cabecera a la biblioteca Las cabeceras lt iso646 h gt lt wchar h gt y lt wctype h gt fueron anadidas con Normativa Addendum 1 abreviado NA1 y fueron ratificadas por el estandar en 1995 Las cabeceras a href Complex h html title Complex h lt complex h gt a lt fenv h gt lt inttypes h gt lt stdbool h gt lt stdint h gt y lt tgmath h gt fueron anadidas en 1999 con la revision C99 del estandar El soporte de estas nuevas extensiones varia segun implementaciones El estandar ANSI EditarLa biblioteca estandar de ANSI C consta de 24 ficheros cabecera que pueden ser incluidos en un proyecto de programacion con una simple directiva Cada cabecera contiene la declaracion de una o mas funciones tipos de datos y macros En comparacion con otros lenguajes de programacion como por ejemplo Java la biblioteca estandar es muy pequena esta proporciona un conjunto basico de funciones matematicas 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 basicos listas pilas colas ni herramientas para crear una interfaz grafica de usuario GUI ni operaciones para trabajar en red ni otras funcionalidades que lenguajes como C o Java incorporan de manera estandar La principal ventaja del reducido tamano de la biblioteca estandar de C es que construir un entorno de trabajo en ANSI C es muy facil 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 programacion Por ejemplo el proyecto de desarrollo del entorno de escritorio de GNOME creo las bibliotecas GTK y GLib con funcionalidades para desarrollar y trabajar con interfaces graficas 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 maximo partido aunque diferentes partes de ellas puedan estar disponibles en cualquier plataforma Archivos de cabeceras de la biblioteca ANSI C Editar lt assert h gt Contiene la macro assert asercion utilizada para detectar errores logicos y otros tipos de fallos en la depuracion de un programa lt complex h gt Conjunto de funciones para manipular numeros complejos nuevo en C99 lt ctype h gt Contiene funciones para clasificar caracteres segun sus tipos o para convertir entre mayusculas y minusculas independientemente del conjunto de caracteres tipicamente ASCII o alguna de sus extensiones lt errno h gt Para analizar los codigos de error devueltos por las funciones de biblioteca lt fenv h gt Para controlar entornos en coma flotante nuevo en C99 lt float h gt Contiene la definicion de constantes que especifican ciertas propiedades de la biblioteca de coma flotante como la diferencia minima entre dos numeros en coma flotante EPSOLON el numero maximo de digitos de precision DIG o el rango de valores que se pueden representar MIN MAX lt inttypes h gt Para operaciones de conversion con precision entre tipos enteros nuevo en C99 lt iso646 h gt Para utilizar los conjuntos de caracteres ISO 646 nuevo en NA1 lt limits h gt Contiene la definicion de constantes que especifican ciertas propiedades de los tipos enteros como rango de valores que se pueden representar MIN MAX lt locale h gt Para la funcion setlocale y las constantes relacionadas Se utiliza para seleccionar el entorno local apropiado configuracion regional lt math h gt Contiene las funciones matematicas comunes lt setjmp h gt Declara las macros setjmp y longjmp para proporcionar saltos de flujo de control de programa no locales lt signal h gt Para controlar algunas situaciones excepcionales como la division por cero lt stdarg h gt Posibilita el acceso a una cantidad variable de argumentos pasados a una funcion lt stdbool h gt Para el tipo booleano nuevo en C99 lt stdint h gt Para definir varios tipos enteros nuevo en C99 lt stddef h gt Para definir varios tipos de macros de utilidad lt stdio h gt Proporciona el nucleo de las capacidades de entrada salida del lenguaje C incluye la venerable funcion a href Printf html title Printf printf a lt stdlib h gt Para realizar ciertas operaciones como conversion de tipos generacion de numeros pseudo aleatorios gestion de memoria dinamica control de procesos funciones de entorno de senalizacion de ordenacion y busqueda lt string h gt Para manipulacion de cadenas de caracteres lt tgmath h gt Contiene funcionalidades matematicas de tipo generico type generic nuevo en C99 lt time h gt Para tratamiento y conversion entre formatos de fecha y hora lt wchar h gt Para manipular flujos de datos anchos y varias clases de cadenas de caracteres anchos 2 o mas bytes por caracter necesario para soportar caracteres de diferentes idiomas nuevo en NA1 lt wctype h gt Para clasificar caracteres anchos nuevo en NA1 La biblioteca estandar de C en C EditarEl lenguaje de programacion C incluye la funcionalidad de la biblioteca estandar ANSI C pero hace algunas modificaciones como cambiar los nombres de los ficheros de cabecera de lt xxx h gt a lt cxxx gt aunque los nombres en estilo C aun siendo obsoletos siguen estando disponibles y ubican todos los identificadores dentro del namespace std Bibliotecas de apoyo comunes EditarAunque no este estandarizado los programas en C pueden depender de una biblioteca de rutinas en tiempo de ejecucion que contengan codigo que el compilador utiliza en tiempo de ejecucion El codigo que inicializa un proceso por el sistema operativo por ejemplo antes de llamar a main esta implementado en la biblioteca Run Time tiempo de ejecucion de C proporcionada por el distribuidor del compilador El codigo de la biblioteca Run Time podria ayudar con otras caracteristicas de la implementacion como la manipulacion de excepciones no capturadas o implementando codigo para operaciones en coma flotante La biblioteca estandar de C solo documenta que las rutinas mencionadas en el presente articulo estan disponibles asi como su comportamiento Ya que la implementacion del compilador podria depender de la implementacion de estas funciones para estar disponible es probable que la especificacion de las rutinas proporcionada por el fabricante este empaquetada con la biblioteca estandar de C en el mismo modulo ya que probablemente ambas seran necesarias para cualquier programa construido con este compilador Aunque a menudo se confunda con la biblioteca estandar de C debido a este empaquetamiento la biblioteca Run Time de C no es una parte normalizada del lenguaje sino que es una especificacionFunciones incorporadas del compilador EditarAlgunos compiladores por ejemplo GCC 1 proporcionan versiones incorporadas de muchas de las funciones de la biblioteca estandar de C es decir la implementacion de las funciones esta escrita dentro del fichero objeto compilado y el programa llama a la version incorporada en vez de a la funcion del fichero objeto compartido en la biblioteca de C Esto reduce el sobrecoste de una llamada a funcion especialmente si las llamadas a funcion son remplazadas con variantes inline y permiten otras formas de optimizacion como cuando el compilados sabe las caracteristicas de control de flujo de las variantes incorporadas pero puede causar confusion al depurar por ejemplo las versiones incorporadas no pueden ser remplazadas por las variantes instrumentadas Biblioteca estandar de POSIX EditarArticulos principales En C POSIX libraryy C POSIX library en ingles POSIX y SUS especifica una serie de rutinas que deben estar disponibles mas alla de la propia biblioteca estandar de C A menudo estas se implementan conjuntamente con la biblioteca de C estandar con distintos niveles de proximidad Por ejemplo glibc implementa funciones como fork dentro de libc so pero antes NPTL se fusiono con glibc constituyendo una biblioteca con su propia marca de linkado A menudo esta funcionalidad de POSIX se considera una parte de la biblioteca la propia biblioteca de C puede ser identificada como la biblioteca ANSI C o ISO C Vease tambien EditarLista de funciones en C Biblioteca de C GNU dietlibc alternativa reducida a la biblioteca estandar de C uClibc una biblioteca estandar de C para sistemas Linux empotrados sin MMU newlib una biblioteca estandar de C para sistemas empotrados requiere MMU klibc principalmente para arrancar sistemas Linux EGLIBC variante de glibc para sistemas embebidos Biblioteca estandar de C Referencias Editar Other built in functions provided by GCC GCC ManualEnlaces externos EditarLa guia de referencia de la biblioteca de C Archivado el 18 de enero de 2015 en Wayback Machine en ingles Microsoft Las bibliotecas Run Time de C en MSDN en ingles nbsp Datos Q300914 Obtenido de https es wikipedia org w index php title Biblioteca estandar de C amp oldid 152524684, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos