Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Entender a diretiva #define
  2. Entender a diretiva #undef

A linguagem C nos permite definir macros, constantes e renomear recursos utilizando a diretiva #define. Com o uso dessa diretiva, podemos criamos macros que antes da compilação, suas chamadas são substituídas pelas declarações em seus corpos.

Sintaxe
#define nome_macro valor / expressão / funcao 
Exemplo 1
#include <stdio.h>
#define DEBUG 1

void main()
{
    printf("%d \n",DEBUG); //DEBUG é substituído por 1 antes da compilação.
}
Saída
1

Podemos dar apelidos aos tipos de dados nativos da linguagem C "criando" novos tipos para evitar a digitação de longos tipos de dados

Exemplo 2
#include <stdio.h>
#define uint unsigned int

void main()
{
    uint teste = 999; //uint é substituído por unsigned int
    printf("%u \n",teste);
}
Saída
999

Além de criar apelidos para os tipos de dados, como no exemplo acima, podemos apelidar também os comandos da linguagem C, como no exemplo abaixo:

Exemplo 3
#include <stdio.h>
#define se if
#define senao else

int main()
{
    se(1 != 1)
        printf("%s \n", "if substituido!");
    senao
        printf("%s \n", "else substituido!");
}
Saída
else substituido!

A diretiva #define nos permite a criação de macros mais complexas em que seu conteúdo, sendo possível utilizar variáveis, funções e expressões na declaração de seu corpo. Mais sobre macros pode ser visto em C Diretivas: Macros.

A diretiva #undef é bem simples de entender. Essa diretiva é utilizada para desfazer um(a) #define previamente criada em nosso programa.

Sintaxe
#undef nome_macro
Exemplo 4
#include <stdio.h>
int main()
{
	#define FORMULA(a,b) (a) + (b)
	printf("%d \n",FORMULA(1,2));
	#undef FORMULA
	#define FORMULA(a,b) (a) * (b)	
	printf("%d \n",FORMULA(1,2));
}
Saída
3 
2
  1. 07/10/2024 - revisão 2 - Ajustes pontuais
  2. 29/09/2023 - revisão 1 - Correção em referências, erros gramaticais e exemplo 3
  3. 19/05/2023 - versão inicial