Menu
Coddy logo textTech

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 as declarações de funções em arquivos de cabeçalho, mas o código real da função (a definição) ficou no arquivo main. O próximo passo na programação modular é mover essas definições para seus próprios arquivos-fonte (arquivos .c).

Isso cria uma estrutura organizada em três partes: o arquivo de cabeçalho declara as funções, um arquivo-fonte separado as define, e main simplesmente as utiliza. 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 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 cabeçalho para usar a função; ele não precisa saber como add funciona internamente.

Essa separação mantém ocultos os detalhes de implementação e permite modificar a lógica da função 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 as declarações, um arquivo-fonte para as implementações e um arquivo principal que as utiliza.

Você criará três arquivos:

  • math_ops.h: seu arquivo de cabeçalho contendo as declarações das funções para duas operações: multiply e subtract. Ambas as funções recebem dois inteiros e retornam um inteiro. Não se esqueça de incluir guardas de inclusão usando o símbolo MATH_OPS_H.
  • math_ops.c: seu arquivo-fonte contendo as implementações reais de multiply e subtract. Esse 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 utiliza ambas as funções para realizar cálculos.

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

Você receberá duas entradas inteiras: a e b.

Na sua função principal, imprima os resultados de ambas as 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, armazene o resultado
    
    // TODO: Chame a função subtract com a e b, 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