Escolar Documentos
Profissional Documentos
Cultura Documentos
Pr-processador
g.p. telles
Linguagem C p.1
Compilao
Programa C
Declaracoes
do programador
0+
Definicoes
do programador
1+
Pre-processador
Declaracoes
de bibliotecas
0+
Compilador
codigo-fonte
codigo-objeto
codigo-objeto
Definicoes
de bibliotecas
1+
Ligador
0+
executavel
Linguagem C p.2
Diretivas do pr-processador
Uma inha que comea com # uma diretiva de
pr-processador (pode ser precedida por espaos).
Exemplos:
#include
#define
Linguagem C p.3
#include
#include <arquivo>
#include "arquivo"
Linguagem C p.4
#define
#define identificador tokens
Exemplos
#include <stdio.h>
#define
#define
#define
#define
FIRST_CHAR a
SECOND_CHAR b
COMMA ,
STRING "um exemplo de macro."
void main() {
putchar(FIRST_CHAR);
putchar(SECOND_CHAR);
putchar(COMMA);
puts(STRING);
}
Linguagem C p.6
#undef
Faz com que a definio da macro seja desativada
daquele ponto em diante.
#define pi 3.14
...
#undef pi
Linguagem C p.7
Constantes simblicas
Constantes simblicas melhoram a clareza,
legibilidade e facilitam a manuteno.
#define MAX 100
int V[MAX], i;
for (i=1; i<MAX; i++)
V[i] = 1;
Linguagem C p.8
Constantes simblicas
Podem aumentar a velocidade de execuo:
#define TAXA 0.3
...
imposto = preco * TAXA;
Linguagem C p.9
Linguagem C p.10
Linguagem C p.11
Exemplo: exm-macros-1.c
Linguagem C p.12
Syntatic sugar
Macros podem ser usadas para alterar a sintaxe da
linguagem, definindo comandos e operadores:
#define eq ==
#define elsif else if
if (a eq 0) {}
elsif (a eq 1) {}
else {}
Linguagem C p.13
Compilao condicional
Diretivas que fazem com que o pr-processador no
envie trechos do programa para o compilador.
#if express
ao-integral-constante
#elif express
ao-integral-constante
#else
#endif
#ifdef identificador
#endif
#ifndef identificador
#endif
defined(constante)
Linguagem C p.14
Compilao condicional
til para
Setar variveis que dependem da plataforma.
Ativar/desativar cdigo de depurao.
Comentar trechos de cdigo j comentados.
Exemplo:
#ifdef UNIX
const int nice = 10;
#elif defined(MSDOS)
const int nice = 0;
#else
const int nice = 5;
#endif
Linguagem C p.15