C/Biblioteca estándar
A biblioteca estándar de C é unha biblioteca de funcións estandarizada utilizada para facer uso das operacións máis habituais, como a entrada e saída de datos ou a xestión de cadeas de caracteres. Ao contrario que outras linguaxes de programación, C non inclúe estas funcións entre as súas palabras clave internas, polo que case todos os programas apóianse no uso das funcións da biblioteca estándar.
Historia
[editar]Antes de estandarizarse, a linguaxe de programación C non estaba dotada de funcionalidades internas para operacións de entrada e saída, como outras linguaxes. Co tempo, as comunidades de usuarios de C compartiron ideas e usos do que hoxe se coñece como a biblioteca estándar de C para fornecer dita funcionalidade. Moitas destas ideas incluíronse nalgún momento dado na definición estándar de C.
Tanto Unix como C creáronse nos AT&T's Bell Laboratories entre finais dos sesenta e principios dos setenta. Durante os anos setenta a linguaxe de programación C volveuse cada vez máis popular, con moitas universidades e organizacións comezando a crear as súas propias variacións da linguaxe para os seus propios proxectos.
A comezos dos oitenta comezaron a facerse evidentes os problemas de compatibilidade entre as diferentes aplicacións de C. En 1983, o American National Standards Institute (ANSI) reuniuse en comité para establecer unha especificación estándar de C, coñecida coma “ANSI C”. O seu traballo culminou na creación do así chamado estándar C89 en 1989. Parte do estándar resultante foron unha serie de bibliotecas de software chamadas a “biblioteca estándar de ANSI C”.
Revisións posteriores do estándar de C engadiron diversos ficheiros de cabeceira solicitados á biblioteca. O soporte para estas novas extensións varía segundo a aplicación.
Os ficheiros de cabeceira iso646.h
, wchar.h
e wctype.h
enghadíronse ao Normative Addendum 1 (NA1), un engadido ao estándar de C ratificado en 1995.
Os ficheiros de cabeceira complex.h
, fenv.h
, inttypes.h
, stdbool.h
, stdint.h
e tgmath.h
engadíronse co C99, unha revisión do estándar de C publicada en 1999.
Deseño
[editar]A declaración de cada función mantense nun ficheiro de cabeceira, mentres que a verdadeira aplicación das funcións están separadas nun ficheiro de biblioteca. Os nomes e ámbitos dos ficheiros de cabeceira puxéronse en común, pero a organización das bibliotecas aínda mantén certa diversidade. A biblioteca estándar adoita distribuírse xunto cun compilador. Dado que os compiladores de C adoitan fornecer funcionalidades adicionais non especificadas no ANSI C, a biblioteca estándar de cada compilador adoita ser na súa maior parte incompatible coas bibliotecas estándar do resto dos compiladores.
Gran parte da biblioteca estándar de C demostrou estar ben deseñada. Algunhas partes, porén, considéranse teñen erros. Por exemplo, as funcións de introdución de cadeas gets()
(e scanf()
cando se usa para a lectura de cadeas) dan lugar a moitos erros de lectura incompleta, e a meirande parte das guías de programación recomendan evitar o seu uso. Outra función problemática é strtok()
, deseñada como un analizador léxico primitivo pero moi “fráxil” e difícil de utilizar.