Capítulo 18: Organização em Múltiplos Arquivos 📁🧱
Neste capítulo, vamos aprender a dividir nosso projeto em vários arquivos separados, usando arquivos de cabeçalho (.h) e arquivos de implementação (.c), com o tema Lego!
📖 Por que dividir o código?
Quando os projetos crescem, colocar tudo em um único arquivo main.c fica confuso. Dividir o código em módulos (como blocos de Lego) facilita a organização, leitura e manutenção!
- Arquivo
.h(Header): Contém as declarações das funções (o manual do bloco). - Arquivo
.c(Implementação): Contém o código real das funções (o bloco em si).
📖 Exemplo Guiado: Construindo com Blocos
Vamos criar um módulo para operações matemáticas simples e usá-lo na nossa main.
- Crie o arquivo
operacoes.hna pastasrc/:
// Diretivas para evitar que o arquivo seja incluído mais de uma vez
#ifndef OPERACOES_H
#define OPERACOES_H
// Apenas a declaração da função
int somar(int a, int b);
#endif- Crie o arquivo
operacoes.cna pastasrc/:
#include "operacoes.h" // Inclui o arquivo de cabeçalho
// Implementação da função
int somar(int a, int b) {
return a + b;
}- Crie o arquivo
main_lego.cna pastasrc/:
#include <stdio.h>
#include "operacoes.h" // Inclui nosso próprio cabeçalho
int main() {
int resultado = somar(10, 5);
printf("Resultado da soma dos blocos: %d\n", resultado);
return 0;
}🕹️ Como Executar e Testar no VS Code
Para compilar múltiplos arquivos, precisamos passar todos eles para o comando gcc:
- Abra o terminal integrado.
- Compile:
gcc main_lego.c operacoes.c -o programa_lego - Execute:
./programa_lego
Resultado Esperado:
Resultado da soma dos blocos: 15📊 Ilustração Visual: Estrutura Modular
Veja como os arquivos se conectam:
graph TD A[main_lego.c] -->|Inclui| B[operacoes.h] C[operacoes.c] -->|Inclui| B D[Compilador] -->|Junta| A D -->|Junta| C D --> E[Executável Final]
🛠️ Prática Obrigatória 1: Adicionando Subtração
Adicione a função subtrair(int a, int b) no projeto Lego! Você precisará:
- Declarar no
operacoes.h. - Implementar no
operacoes.c. - Usar na
main_lego.ce exibir o resultado.
🔑 Gabarito de Código
Prática 1: Arquivos atualizados
operacoes.h
#ifndef OPERACOES_H
#define OPERACOES_H
int somar(int a, int b);
int subtrair(int a, int b); // Nova linha
#endifoperacoes.c
#include "operacoes.h"
int somar(int a, int b) {
return a + b;
}
int subtrair(int a, int b) { // Nova função
return a - b;
}📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
(Siga o padrão estabelecido no Guia)