IntroduçãoO pré-processador C é um programa que examina o programa fonte em C e executa certas modificações nele, baseado em instruções chamadas diretivas.
O pré-processador faz parte do compilador e pode ser considerado uma linguagem dentro da linguagem.
Ele atua antes da compilação de um programa, fazendo pesquisa e substituição no código fonte antes de iniciar a compilação.
Como já dito, a substituição basea-se em diretivas definidas no corpo do código fonte.
As diretivas em sempre iniciam com o caracter #.
Algumas das principais diretivas da linguagem C são as seguintes:
#include
#define
#error
#ifdef
#undef
entre outras
A diretiva #defineCom a diretiva #define definimos um identificador (escrito em maiúsculo) que deverá ser localizado.
Em seguida, após pelo menos um espaço em branco, definimos o texto resultante que substituirá o identificador localizado.
A operação toda (definição mais pesquisa e substituição) é denominada de macro.
Exemplo 1#include <stdio.h>
#include <conio.h>
#define PI 3.14159
float area(float r);
void main()
{
float raio;
printf("Digite o raio da esfera: ");
scanf("%f",&raio);
printf("A area da esfera eh %f",area(raio));
getch();
}
float area(float r)
{
return(4 * PI * r * r);
}Por Que Usar #define ?Talvez você se pergunte o que ganhamos substituindo, no programa anterior, PI por 3.14159.
Suponhamos que você tenha um programa em que a constante 3.14159 apareça muitas vezes.
Suponha, ainda, que agora você queira uma precisão maior e queira trocar 3.14159 por 3.141592.
Você deverá ir passo a passo através do programa e trocar cada ocorrência que encontrar da constante.
Entretanto, se você tiver definido 3.14159 como sendo PI na diretiva #define, você deverá somente fazer uma troca.
Exemplo 2#include <stdio.h>
#include <conio.h>
#define SOMA(x,y) (x+y)
void main()
{
printf("Resultado: %d",SOMA(3,5));
getch();
}Exemplo 3#include <stdio.h>
#include <conio.h>
#define ERRO printf("\nERRO: NUMERO INVALIDO")
void main()
{
int i;
printf("Digite um numero de 0 a 100: ");
scanf("%d",&i);
if( (i<0) || (i>100))
ERRO;
getch();
}ExercíciosTorne o código abaixo interpretável pelo compilador C.
algoritmo
inicio
escreva("teste");
espere;
fimSolução
#include <stdio.h>
#include <conio.h>
#define algoritmo void main()
#define inicio {
#define fim }
#define escreva(x) printf(x)
#define espere getch()
algoritmo
inicio
escreva("teste");
espere;
fim