Top Qs
Linha do tempo
Chat
Contexto
Biblioteca padrão do C
Da Wikipédia, a enciclopédia livre
Remove ads
A biblioteca padrão do C (também conhecida como libc) é uma biblioteca de rotinas padronizada da linguagem de programação C que contém operações comuns como tratamento de entrada/saída e cadeia de caracteres. Diferente de outras linguagens como COBOL, Fortran e PL/I, C não inclui palavras-chave nativas para tais tarefas, de forma que praticamente todos os programas C fazem uso da biblioteca padrão.
Remove ads
Estrutura
O nome e as características de cada função estão em um arquivo chamado cabeçalho, mas a implementação das funções está em um arquivo separado. A nomenclatura e o escopo dos cabeçalhos é comum a diferentes implementações, mas a organização das bibliotecas diverge. Cada compilador C possui sua implementação da biblioteca padrão C. Como os compiladores C geralmente oferecem funcionalidades adicionais que não são especificadas pelo ANSI C, a implementação da biblioteca padrão de um compilador é muito provavelmente incompatível com a de outro.
Qualidade
A maior parte da biblioteca padrão se mostrou ter sido bem desenvolvida. Entretanto, algumas partes são atualmente consideradas erros de modelagem. Por exemplo, as funções de entrada de texto gets()
e scanf()
(esta, para ler entrada de texto) são consideradas a fonte de diversos problemas de buffer overflow, e seu uso é desaconselhado. Outra fraqueza é strtok()
, uma função que visa servir como um analisador léxico primitivo, mas que é "frágil" e difícil de usar.
Remove ads
História
Resumir
Perspectiva
Antes de ser padronizada, a linguagem C não fornecia funcionalidades nativas como operações de entrada e saída, diferente de outras linguagens tradicionais como Cobol e Fortran. Com o tempo, a comunidade de usuários compartilhou idéias e implementações do que é atualmente chamado biblioteca padrão.
Tanto o Unix quanto a linguagem C foram criados no Bell Labs entre o final da década de 1960 e o início da década de 1970. Durante a década de 1970 a linguagem C tornou-se cada vez mais popular, e diferentes universidades e organizações estavam criando suas próprias variações da linguagem para seus projetos. A partir da década de 1980, os problemas de compatibilidade por conta dessas diferentes versões se tornou cada vez mais aparente. Em 1983 a ANSI formou um comitê para estabelecer uma especificação formal da linguagem conhecida como ANSI C. Esse trabalho culminou na criação padrão C89 em 1989. Parte do padrão que havia surgido era um conjunto de bibliotecas chamado biblioteca padrão do ANSI C.
Revisões posteriores do padrão da linguagem C adicionaram diversos novos cabeçalhos e funcionalidades à biblioteca padrão. Entretanto, o suporte para essas novas extensões variam entre implementações.
Os cabeçalhos <iso646.h>, <wchar.h> e <wctype.h> foram adicionados com o Normative Addendum 1 (NA1), uma ratificação de 1995. Já os cabeçalhos <complex.h>, <fenv.h>, <inttypes.h>, <stdbool.h>, <stdint.h> e <tgmath.h> foram adicionados com o C99, uma revisão do padrão publicada em 1999.
Remove ads
Padrão ANSI
Resumir
Perspectiva
A biblioteca padrão ANSI C consiste de 24 cabeçalhos, cada um contendo uma ou mais declarações de funções, tipos de dados e macros. Em comparação com linguagens como Java, esta biblioteca padrão é minúscula. Ela fornece um conjunto básico de operações matemáticas, manipulação de cadeias de caracteres, conversão de tipos de dados e entrada e saída de arquivo e da tela. Não contém um conjunto padrão de containers como a biblioteca padrão do C++ (parte chamada Standard Template Library), nem suporta interface gráfica do utilizador. A vantagem desse sistema minimalista é que fornecer um ambiente funcional de ANSI C é muito mais simples que em outras linguagens, e, conseqüentemente, a portabilidade de C entre diferentes plataformas é uma tarefa relativamente simples.
Várias outras bibliotecas foram desenvolvidas para suprir as necessidades computacionais que a biblioteca padrão não cobre. Por exemplo, o projeto GNOME desenvolveu o toolkit GTK+ e a GLib, uma biblioteca de containers.
Cabeçalhos do ANSI C
Remove ads
Biblioteca padrão do C em outras linguagens
Algumas linguagens incluem a funcionalidade da biblioteca padrão do C em suas próprias bibliotecas. A biblioteca pode ser adaptada para se adequar melhor à estrutura da linguagem destino, mas a semântica permanece a mesma. Por exemplo, C++ inclui a funcionalidade da biblioteca padrão ANSI C no espaço de nomes std
(como std::printf
, std::atoi
, std::feof
, etc.), em cabeçalhos parecidos com os do C, exceto pela retirada do sufixo ".h" e pela adição do prefixo "c" ("cstdio
", "cmath
", "cstdlib
", etc.). Outras linguagens que também adotam abordagens similares incluem D, Python e Go. Um caso curioso das linguagens Rust e Zig, é a possibilidade de automaticamente traduzir o código C para essas linguagens utilizando algumas ferramentas próprias como bindgen-rs
vinculado ao gerenciador de projeto cargo
e o zig translate-c
ao fazer uso da palavra-chave @cImport(@cInclude("stdio.h"))
durante a compilação ou simplesmente passar os parametros em ambas ferramentas, contendo também o arquivo .c
.
Remove ads
Implementações
- GNU C Library (glibc)
- Microsoft C Run-time Library
- Musl, uma pequena implementação para sistema embarcado Linux, sendo bastante simples e limpa.
- dietlibc, uma pequena implementação alternativa
- uClibc, uma implementação para sistema embarcado Linux (sem MMU)
- Newlib, uma implementação para sistema embarcado Linux (sem MMU)[1]
- klibc, para o boot de sistemas Linux
- EGLIBC, variante da glibc para sistemas embarcados
.
Remove ads
Referências
Ver também
Ligações externas
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads