Menu
CoddyTech

Arquivos-fonte

Parte da seção Programação Orientada a Objetos do Journey de C da Coddy. Lição 3 de 61.

Até agora, colocamos declarações de funções em arquivos de cabeçalho, mas o código real das funções (a definição) ficou no arquivo principal. A próxima etapa da programação modular é mover essas definições para seus próprios arquivos de origem (arquivos .c).

Isso cria uma estrutura organizada em três partes: o cabeçalho declara funções, um arquivo-fonte separado as define e main simplesmente as usa. Veja como fica:

// math_utils.h
#ifndef MATH_UTILS_H
#define MATH_UTILS_H

int add(int a, int b);

#endif
// math_utils.c
#include "math_utils.h"

int add(int a, int b) {
    return a + b;
}
// main.c
#include <stdio.h>
#include "math_utils.h"

int main() {
    printf("%d\n", add(5, 3));
    return 0;
}

Observe que math_utils.c inclui seu próprio arquivo de cabeçalho. Isso garante que a definição da função corresponda à declaração; se elas não corresponderem, o compilador detectará o erro. O arquivo principal só precisa incluir o arquivo de cabeçalho para usar a função; não precisa saber como add funciona internamente.

Essa separação mantém os detalhes da implementação ocultos e permite modificar a lógica das funções sem tocar nos arquivos que usam essas funções.

challenge icon

Desafio

Fácil

Vamos criar um utilitário matemático simples, organizando seu código na estrutura adequada de três arquivos: um cabeçalho para declarações, um arquivo-fonte para implementações e um arquivo principal que os utiliza.

Você criará três arquivos:

  • math_ops.h: seu arquivo de cabeçalho, contendo as declarações de duas operações: multiply e subtract. Ambas as funções recebem dois números inteiros e retornam um número inteiro. Não se esqueça de incluir proteções de cabeçalho usando o símbolo MATH_OPS_H.
  • math_ops.c: seu arquivo-fonte, contendo as implementações de multiply e subtract. Este arquivo deve incluir seu próprio cabeçalho para garantir que as declarações correspondam às definições.
  • main.c: seu arquivo principal, que inclui o cabeçalho e usa ambas as funções para realizar cálculos.

A função multiply deve retornar o produto de dois números inteiros, e subtract deve retornar o primeiro número inteiro menos o segundo.

Você receberá dois valores inteiros de entrada: a e b.

Na sua função principal, imprima os resultados das duas operações em linhas separadas:

Product: {result of multiply}
Difference: {result of subtract}

Por exemplo, com as entradas 8 e 3, a saída seria:

Product: 24
Difference: 5

Experimente você mesmo

#include <stdio.h>
#include "math_ops.h"

int main() {
    int a, b;
    scanf("%d", &a);
    scanf("%d", &b);
    
    // TODO: Chame a função multiply com a e b e armazene o resultado
    
    // TODO: Chame a função subtract com a e b e armazene o resultado
    
    // TODO: Imprima os resultados no formato:
    // Produto: {resultado de multiply}
    // Diferença: {resultado de subtract}
    
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos

Pratique por conta própria: Compilador de C online