Biblioteca padrão C e arquivos de cabeçalho

            A biblioteca padrão C é uma coleção padronizada de arquivos de cabeçalho e rotinas de bibliotecas utilizadas para implementar operações comuns, como E/S e manipulação de strings, entre outras. Diferente de linguagens como Fortran, Cobol e PL/I, a linguagem C não possui palavras-chave para tais tarefas, de forma que praticamente todo programa escrito em C faz uso da biblioteca padrão. Cada compilador C possui sua implementação da biblioteca padrão C. 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.

            A API da biblioteca padrão C é declarada em um número de arquivos de cabeçalho. Os arquivos de cabeçalho contém declarações de funções (sua assinatura: nome, parâmetros e tipo de retorno), bem como constantes e/ou macros. Não possuem, por exemplo, a real implementação do código de uma função e sua inclusão noutros códigos-fonte acontece por parte do programador. Uma biblioteca, no que lhe concerne, é de fato o que implementa o código (funcionalidade) das funções declaradas nos arquivos de cabeçalho, incluída pelo compilador na fase final de compilação. Basicamente, os arquivos de cabeçalho servem como um link (uma interface) para o arquivo de biblioteca que possui a funcionalidade real, enquanto as bibliotecas são os arquivos que contém os códigos pré-programados e organizados que poderão ser utilizados em aplicações, reunindo recursos que serão utilizados por programas de computador e incluem:

            Exemplificando, em C, math.h é um arquivo de cabeçalho com protótipos de funções como pow() e sqrt(), ao passo que as funções propriamente são implementadas em bibliotecas como libm.lib ou libmmd.lib.

            A tabela abaixo lista as diferenças entre bibliotecas e arquivos de cabeçalho:

  Arquivos de cabeçalho Arquivos de biblioteca
O que é? Arquivo que contém declarações de funções que serão compartilhadas entre diversos arquivos fonte Arquivo que contém definições de funções para as funções referenciadas nos arquivos de cabeçalho
Formato São legíveis por humanos, uma vez que possuem formato de texto Não são legíveis por humanos, uma vez que possuem formato binário
Método de inclusão O programador inclui através da diretiva de pré-processamento #include O compilador relaciona os arquivos de biblioteca relevantes automaticamente para o programa e o linker inclui-os no último estágio de compilação
Modificação Podem ser modificados Não podem ser modificados
Extensão Possuem extensão .h Possuem extensão .lib
Local Disponíveis no sub-diretório include do compilador Disponíveis no sub-diretório lib do compilador

            As bibliotecas são referenciadas por arquivos de cabeçalho porque um único header pode conter referências a várias bibliotecas em simultâneo, poupando trabalho. Com uma única linha de código, são carregadas funções de várias bibliotecas.

            A biblioteca padrão C consiste em 24 arquivos de cabeçalho, cada um contendo uma ou mais declarações de funções, tipos de dados e macros. Abaixo, uma tabela que lista cada um dos cabeçalhos disponíveis:

  Descrição Disponibilidade a partir de
<assert.h> Macro para ajudar na detecção de erros lógicos e outros tipos de erros em versões de depuração de um programa  
<complex.h> Conjunto de funções para manipular números complexos C99
<ctype.h> Funções usadas para classificar caracteres pelo tipo ou para converter entre caixa alta e baixa independentemente da codificação  
<errno.h> Teste de códigos de erro reportados pelas funções de bibliotecas  
<fenv.h> Controle de ponto flutuante C99
<float.h> Constantes de propriedades específicas de implementação da biblioteca de ponto flutuante, como a menor diferença entre dois números de ponto flutuante distintos (_EPSILON), a quantidade máxima de dígitos de acurácia (_DIG) e a faixa de números que pode ser representada (_MIN, _MAX)  
<inttypes.h> Conversão precisa entre tipos inteiros C99
<iso646.h> Programação na codificação de caracteres ISO 646 NA1
<limits.h> Constantes de propriedades específicas de implementação da biblioteca de tipos inteiros, como a faixa de números que pode ser representada (_MIN, _MAX)  
<locale.h> Constantes para setlocale() e assuntos relacionados  
<math.h> Funções matemáticas comuns em computação  
<setjmp.h> Macros setjmp e longjmp, para saídas não locais  
<signal.h> Tratamento de sinais  
<stdarg.h> Acesso dos argumentos passados para funções com parâmetro variável  
<stdbool.h> Definição do tipo de dado booleano C99
<stdint.h> Definição de tipos de dados inteiros C99
<stddef.h> Diversos tipos e macros úteis  
<stdio.h> Manipulação de entrada/saída  
<stdlib.h> Diversas operações, incluindo conversão, geração de números pseudo-aleatórios, alocação de memória, controle de processo, sinais, busca e ordenação  
<string.h> Tratamento de cadeia de caracteres  
<tgmath.h> Funções matemáticas C99
<time.h> Conversão de tipos de dado de data e horário  
<wchar.h> Manipulação de caractere wide, usado para suportar diversas línguas NA1
<wctype.h> Classificação de caracteres wide NA1

Obs.: 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.

Biblioteca padrão C e arquivos de cabeçalho
            Biblioteca padrão C e arquivos de cabeçalho

            No Windows, os arquivos de cabeçalho estão localizados em C:\MinGW\include:

Include no Windows

            No Linux, os arquivos de cabeçalho estão localizado em /usr/include:

Include no Linux

Página anterior

Próxima página