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 256Substituiçã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 */
#endifNomenclatura 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
- Definindo enums
- Valores e intervalos de enums
- Variáveis const
- Constantes #define