Bibliotecas de funções

[Library-books.jpg]

Todos os programas em linguagem C usam funções das bibliotecas padrão da linguagem.  O conjunto de funções de cada biblioteca é descrito em um arquivo-interface (= header-file), que tem o mesmo nome da biblioteca e sufixo .h.  (Essa interface também é conhecida como API, ou application programming interface.)

Veja algumas amostras simplificadas de interfaces das principais bibliotecas padrão C:

Para ter acesso a uma biblioteca, seu programa deve incluir uma cópia do correspondente arquivo-interface.  Por exemplo, basta escrever

#include <stdlib.h>

para que o pré-processador da linguagem C acrescente uma cópia de stdlib.h ao seu programa.  (No sistema Linux, os arquivos-interface ficam, em geral, no diretório /usr/include/; mas você não precisa saber disso.)

A documentação das funções de uma biblioteca deveria, idealmente, estar no arquivo-interface.  Na prática, porém, a documentação é mantida à parte.  Para consultar a documentação de uma função de biblioteca no sistema Linux, digite  man nome_da_função  no terminal ou consulte o Function and Macro Index da GNU C Library.   A documentação completa também pode ser vista nos seguintes lugares:

Como escrever uma interface para sua própria biblioteca

impl-interf-app.png

Veja o seguinte arquivo-interface para uma biblioteca imaginária bib:

// Este arquivo: bib.h
// Breve descrição da biblioteca: ...
/////////////////////////////////////

#ifndef _BIB_H
#define _BIB_H

// Inclusão de outras interfaces
// necessárias para entender esta 
// interface.

#include <aaaa.h>
#include <bbbb.h>

// Definições das macros que 
// a biblioteca bib usa.

#define XXX 1000

// Protótipos das funções da 
// biblioteca.
/////////////////////////////////////

// A função xxx recebe ... e
// devolve ... tal que ... 
//
int xxxx (int a, char c, int v[]);
 
// A função yyyy recebe ... e
// devolve ... tal que ...
//
void yyyy (double a, int b);

#endif

O arquivo bib.h deve ser incluído em todos os arquivos-fonte que usam a biblioteca bib, bem como na implementação bib.c da biblioteca.

[Esta seção foi copiadas das páginas 275 e 286 do Art and Science of C de Eric Roberts.]