laboratório de programação i: construção de bibliotecas em c

9
Construção de bibliotecas em C Construção de bibliotecas em C Prof. Alex Camargo [email protected] UNIVERSIDADE FEDERAL DO PAMPA CAMPUS BAGÉ LABORATÓRIO DE PROGRAMAÇÃO I

Upload: alex-camargo

Post on 09-Aug-2015

34 views

Category:

Education


1 download

TRANSCRIPT

Construção de bibliotecas em CConstrução de bibliotecas em C

Prof. Alex [email protected]

UNIVERSIDADE FEDERAL DO PAMPACAMPUS BAGÉ

LABORATÓRIO DE PROGRAMAÇÃO I

Bibliotecas

É muito interessante criar bibliotecas cujas funções possam ser reutilizadas em diversos programas. Com isso podemos, inclusive, distribuir essas bibliotecas, com a opção de "esconder" o código-fonte utilizado nas funções:

Ao programar em C, já utilizamos muitas bibliotecas com funções prontas. Ex.: <stdio.h> e <stdlib.h>

Para criarmos nossas próprias bibliotecas é preciso ter:

Arquivos de cabeçalho (com extensão '.h'). Ex.: “fatorial.h”

Arquivos de biblioteca (no gcc a extensão utilizada é '.a'). Ex.: “libfatorial.a”

Laboratório de Programação I – Construção de bibliotecas em C

Criando uma biblioteca

Veremos um exemplo, em C, de biblioteca contendo uma única função, que receba um valor inteiro e retorne seu sucessor.

O arquivo cabeçalho será sucessor.h, e o arquivo com o código-fonte da função será nomeado sucessor.c contendo:

Veja que já incluímos sucessor.h. Isso será necessário para o compilador reconhecer a função como sendo parte da biblioteca.

Laboratório de Programação I – Construção de bibliotecas em C

Criando uma biblioteca

O arquivo cabeçalho irá conter informações apenas da interface, tipicamente as assinaturas (ou protótipos) das funções. A extensão .h vem da palavra header (cabeçalho).

Nesse caso teremos o arquivo cabeçalho, nomeado sucessor.h, definido da seguinte maneira:

As primeiras linhas (#ifndef e #define) tem a função de verificar se o arquivo cabeçalho já foi incluído no projeto, antes de incluí-lo novamente de forma desnecessária.

Laboratório de Programação I – Construção de bibliotecas em C

Criando uma biblioteca

Temos, então, dois arquivos: sucessor.c (função) e sucessor.h (cabeçalho).

Para utilizá-los, devemos gerar o arquivo objeto da biblioteca:

Também criamos a biblioteca, para que possa ser distribuída:

Os arquivos .a são bibliotecas estáticas que tem a vantagem de poder carregar vários objetos. O comando é bastante útil em projetos maiores.

Laboratório de Programação I – Construção de bibliotecas em C

Utilizando a biblioteca

Agora, sempre que for necessário usar funções definidas no arquivo sucessor.c, incluímos o arquivo sucessor.h no programa que vamos implementar.

Abaixo um exemplo de código-fonte, que iremos nomear principal.c, que utiliza a biblioteca sucessor:

Laboratório de Programação I – Construção de bibliotecas em C

Compilando a biblioteca

Na compilação é preciso instruir o compilador com as opções de includes e edição de ligações (linker) para que a biblioteca possa ser incluída no programa executável.

No gcc isso é feito utilizando:

Onde:

-I inclui diretórios onde existam cabeçalhos utilizados no código-fonte.

-L inclui diretórios onde existam bibliotecas que devem ser incluídas no programa.

-lsucessor utiliza o arquivo de biblioteca criado, libsucessor.a -o programa gera como saída o executável principal.

Laboratório de Programação I – Construção de bibliotecas em C

Exercícios

Responda as seguintes questões referentes a criação de bibliotecas em em C.

1. Escreva uma função que recebe como argumentos uma cadeia de caracteres (s) e um caracter (c). A função deve retornar como resultado o número de vezes que (c) aparece em (s). Para o desenvolvimento utilize um arquivo cabeçalho (.h) e uma biblioteca (.a).

Exemplo de saída:

s = unipampac = p

O número de vezes que p aparece em unipampa é 2.

Laboratório de Programação I – Construção de bibliotecas em C

Referências

Ponti, M. P. "Uma breve introdução à criação de bibliotecas e makefiles em C/C++." Universidade de São Paulo, 2011. Disponível em: <http://wiki.icmc.usp.br/images/0/0a/ApostilaMakefiles2011.pdf>. Acesso em Mar/2014.

Laboratório de Programação I – Construção de bibliotecas em C