0Pricing
C Academy · Aula

Constantes #define

Use constantes do pré-processador.

Constantes #define é uma aula grátis de C Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C Academy inclui 4 aulas no total.

O que #define faz

#define é uma diretiva do pré-processador que cria uma macro: um nome que o pré-processador substitui por texto antes da compilação.

Ela é usada com frequência para dar um nome legível a um valor fixo, como o tamanho de um buffer ou um limite.

#define MAX_LEN 256

Substituição de texto

Uma macro é uma substituição direta de texto. Onde quer que MAX_LEN apareça, o pré-processador escreve 256 em seu lugar.

Não há tipo nem memória; isso acontece antes mesmo de o compilador ver o código.

#include <stdio.h>
#define MAX_LEN 256
int main(void) {
    printf("%d\n", MAX_LEN);
    return 0;
}

Sem ponto e vírgula

Um erro comum é terminar uma diretiva #define com um ponto e vírgula.

O ponto e vírgula se torna parte do texto de substituição e pode causar erros confusos. Não o inclua.

#define PI 3.14159     /* correct */
#define BAD 10;        /* wrong: semicolon is substituted too */

Definindo uma constante de ponto flutuante

As macros funcionam com qualquer literal, inclusive valores de ponto flutuante.

Aqui, PI é substituído na fórmula da área em cada uso.

#include <stdio.h>
#define PI 3.14159
int main(void) {
    double r = 2.0;
    printf("%.2f\n", PI * r * r);
    return 0;
}

Macros para tamanhos de matrizes

As macros costumam ser usadas para definir o tamanho de matrizes, porque o valor precisa ser conhecido em tempo de compilação.

Usar um nome mantém o tamanho em um único lugar e facilita sua alteração.

#include <stdio.h>
#define SIZE 5
int main(void) {
    int data[SIZE] = {1, 2, 3, 4, 5};
    printf("%d\n", data[SIZE - 1]);
    return 0;
}

Sempre coloque expressões entre parênteses

Se uma macro se expandir para uma expressão, envolva-a em parênteses.

Sem parênteses, a precedência dos operadores pode mudar o significado quando a macro for usada dentro de uma expressão maior.

#define WIDTH (4 + 2)   /* good */
#define BADW 4 + 2       /* risky: 10 * BADW becomes 10*4+2 */

Por que os parênteses são importantes

Este programa mostra a diferença. Com parênteses, WIDTH é multiplicado como um todo; sem eles, apenas uma parte é multiplicada.

A versão segura imprime 60; a expansão insegura produziria um resultado diferente.

#include <stdio.h>
#define WIDTH (4 + 2)
int main(void) {
    printf("%d\n", 10 * WIDTH);
    return 0;
}

Macros de texto

As macros também podem representar literais de texto, o que é útil para mensagens fixas ou nomes de versão.

O texto é substituído exatamente, incluindo as aspas.

#include <stdio.h>
#define APP_NAME "CoddyKit"
int main(void) {
    printf("Welcome to %s\n", APP_NAME);
    return 0;
}

#define versus const

Uma macro não tem tipo nem endereço; uma variável const tem ambos e respeita o escopo.

Prefira const quando quiser segurança de tipos e visibilidade durante a depuração. Use #define para constantes de tempo de compilação, como tamanhos de matrizes.

#define M_SIZE 10
const int c_size = 10;

Removendo macros e usando guardas

Você pode remover uma macro com #undef. As macros também são usadas em guardas de cabeçalho, que evitam inclusões duplicadas.

Este é o padrão clássico de guarda usado no início dos arquivos de cabeçalho.

#ifndef CONFIG_H
#define CONFIG_H
/* header contents here */
#endif

Nomenclatura convencional

Por uma convenção antiga e consolidada, os nomes de macros são escritos em UPPER_CASE.

Isso as identifica visualmente como constantes do pré-processador e ajuda a evitar conflitos com nomes de variáveis comuns.

#include <stdio.h>
#define BUFFER_SIZE 1024
int main(void) {
    printf("%d\n", BUFFER_SIZE);
    return 0;
}

Verificação rápida

Teste sua compreensão das macros.

Recapitulação

#define cria macros que o pré-processador substitui como texto, sem tipo, sem ponto e vírgula e sem memória.

Coloque as expressões entre parênteses e prefira const para valores seguros quanto a tipos, reservando as macros para necessidades de tempo de compilação, como tamanhos de matrizes e guardas de cabeçalho.

Perguntas Frequentes

A aula “Constantes #define” é grátis?

Sim — o texto completo de “Constantes #define” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C Academy, atualize para CoddyKit PRO. O curso de C Academy inclui 4 aulas no total.

O que vou aprender em “Constantes #define”?

Use constantes do pré-processador. Você pratica C Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C Academy?

Nenhuma experiência prévia é necessária. C Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Constantes #define”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C Academy?

Sim. Cada aula de C Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Definindo enums
  2. Valores e intervalos de enums
  3. Variáveis const
  4. Constantes #define
← Voltar para C Academy