Enviar um café pro programador

Pode me ajudar a transformar cafeína em código?

Como criar uma biblioteca em C

Vamos dar uma pausa em nossa apostila de C, especificamente sobre na seção de strings, para ensinar uma importante lição de organização.

Vamos aprender a criar e usar uma biblioteca, um header, que são aqueles arquivos de extensão .h que usualmente colocamos após o #include.

Por que criar uma biblioteca / header (.h) em C?

Sempre que você faz:
#include <stdio.h>

É como se tivesse colocando os códigos que se encontram dentro de um arquivo chamado 'stdio.h' no seu programa. Mas você não vê esses códigos, é o C/compilador que fazem isso tudo pra você.

Agora imagine se esses códigos aparecessem para você...sabe o que você veria?
Centenas de linhas de código para mostrar um simples 'Hello World' ou outros programas simples, que vínhamos criando até agora.

A utilidade dessas bibliotecas e headers é a de criar um arquivo que contém diversas funções específicas, separadas e organizadas por assuntos.
Por exemplo, existe uma biblioteca chamada string.h (que iremos estudar em breve), que é armazena diversas linhas de códigos com funções prontas para manipularmos strings em C.


Como criar uma biblioteca / header (.h) em C

Vá no Code::Blocks -> Empty File

Salve esse arquivo como: mystring.h
Salve na mesma pasta em que guarda seu código-fonte de C.
Escreva uma simples função nela, como uma que mostre uma mensagem na tela, com um simples printf e salve o arquivo.

Agora volte no seu projeto, que tem extensão .c
Após o #include <stdio.h>
Coloque:
#include "mystring.h"

Pronto. É como se todo o código contigo no arquivo mystring.h estivesse nesse seu arquivo de extensão .c
Faça um teste, invoque a função que criou no header a partir do seu arquivo .c

Note que só podemos usar o nome do header entre aspas se ele estiver na mesma pasta que seu código-fonte .c
Se estiver em outra como em: C:\C_Progressivo\, faça:
#include "C:\C_Progressivo\mystring.h"

Vamos criar uma série de funções de manipulação de caracteres e strings nos próximos tutoriais de nosso curso, e armazenaremos todos nossos códigos em bibliotecas!



9 comentários:

Anônimo disse...

A excelente didática e a perfeita organização dos tópicos desta apostila me deixaram perplexo... Parabéns pelo material! Está sendo deveras útil para a aprendizagem desta tão complexa linguagem computacional.

Anônimo disse...

Simplesmente fantástico, simples e direto.

Anônimo disse...

Como você diz que string.h é uma biblioteca?
Ele é um header, o que é diferente de uma library.

Unknown disse...

Muito bom essa apostila quando com comecei a ler não sabia nada de c agora já sou capais de criar meus próprios programas em c básicos mais já estou evoluíndo muito.

Anônimo disse...

Num ambiente Linux, dá para ver todos os headers e bibliotecas, pois estão na pasta /usr/include. Se esquecer o nome da pasta, basta criar um arquivo .c aleatório, dar um #include e vai ter o /usr/include

Ricardo Erick Rebêlo disse...

Guardar código-fonte em .h? Tem certeza que você sabe o que está fazendo? E a nomenclatura? E a compilação? E a guarda de cabeçalho? E a inclusão no link-editor? Este artigo está deixando muito a desejar. Aprenda a fazer corretamente:

https://jacknpoeexplicacpp.wordpress.com/2015/07/25/criando-bibliotecas-em-c-parte-1-arquivo-de-cabecalho-2/

Anônimo disse...

Na verdade, o arquivo header é onde é colocado todos os cabeçalhos das funções. Em seguida deve-se criar outro arquivo .c com o mesmo nome do header, este porem, terá apenas o corpo das funções declaradas no header. Em seguida, deve-se criar um programa-objeto do arquivo onde está o corpo das funções, ai sim, no seu programa principal, quando usar o #include "nomedoheader.h" ele reconhecerá as funções.

Anônimo disse...

Desse jeito funciona sim, eu fiz e deu muito certo, funcionou perfeitamente.

Nina disse...

Adorei o Artigo! Me ajudou muito!

Era exatamente o que eu estava procurando e exatamente o que eu desejava fazer! Ter algumas funções separadas em arquivos da forma que eu desejar. Eu não fazia idéia de que o C reconheceria comandos em outro arquivo com tanta simplicidade, isso me permite remover do meu source principal as funções e textos que não me interessam no momento e que me atrapalham visualmente!

E não queria fazer da forma tradicional com 2 arquivos .c e .h para minhas funções porque considero desnecessário, extremamente chato e desorganizado tudo espalhado!

Logo outros comentários aqui dizendo que o artigo é errado ou coisa do tipo é completamente absurdo! Cada pessoa faz do jeito que acha melhor! Posso compreender o uso de um Header tradicional, mas para mim acho desnecessário e burocrático demais, espalhando código em inúmeros arquivos sem necessidade!

Parabéns Pelo Artigo, pois a mim, me ajudou e Bastante!