Buscar

Aula 11 pre processador

Prévia do material em texto

Antonio Podgorski
afbezerra@unicarioca.edu.br
PRÉ-PROCESSADOR E DIRETIVAS
1. Definição de Pré-Processador
2. Exemplos de Diretivas
3. Diretiva #define, #include
4. Diretivas de Compilação Condicional
Plano de Aula
Definição
O pré-processador é um programa que faz alguns processamentos simples
antes do compilador. Ele é executado automaticamente todas as vezes que seu
programa é compilado, e os comandos a serem executados são realizados
através de diretivas do pré-processador.
Diretivas
Estas diretivas são colocadas em linhas que contém somente a diretiva, as
linhas que começam com um # são comandos para o pré-processador. A linha
inteira é reservada para este comando (nenhum código C pode aparecer nesta
linha e comandos do pré-processador não podem estar separados em diversas
linhas).
Exemplos de Diretivas
#if
#ifdef
#ifndef
#else
#elif
#endif
#include
#define
#undef
#line
#error
#pragma
Diretiva #define
A diretiva #define define um identificador e uma string que o substituirá toda vez
que for encontrado no arquivo-fonte. O padrão C ANSI refere-se ao identificador
como um nome de macro e ao processo de substituição como substituição de
macro. A forma geral da diretiva é :
#define nome_macro string 
Diretiva #define
Uma vez que um nome de macro tenha sido definido, ele pode ser usado como
parte da definição de outros nomes de macro. Por exemplo, este código define
os valores UM, DOIS e TRES:
#define UM 1 
#define DOIS UM+UM 
#define TRES UM+DOIS
Diretiva #include
A diretiva #include instrui o compilador a ler outro arquivo-fonte adicionado
àquele que contém a diretiva #include. O nome do arquivo adicional deve estar
entre aspas ou símbolos de maior e menor. Por exemplo,
#include "stdio.h" 
#include <stdio.h>
Diretiva #include
A diretiva #include instrui o compilador a ler outro arquivo-fonte adicionado
àquele que contém a diretiva #include. O nome do arquivo adicional deve estar
entre aspas ou símbolos de maior e menor. Por exemplo,
#include "stdio.h" 
#include <stdio.h> ?	Diferenças
Ambas instruem o compilador a ler e compilar o arquivo de cabeçalho para as
rotinas de arquivos em disco da biblioteca.
Diretiva #include
Se o nome do arquivo está envolvido por chaves angulares (sinais de maior e menor), o
arquivo será procurado de forma definida pelo criador do compilador. Frequentemente, isso
significa procurar em algum diretório especialmente criado para arquivos de inclusão.
Se o nome do arquivo esta entre aspas, o arquivo é procurado de uma maneira definida
pela implementação. Para muitas implementações, isso significa uma busca no diretório de
trabalho atual.
Se o arquivo não for encontrado, a busca será repetida como se o nome do arquivo estivesse
envolvido por chaves angulares. O uso de aspas é reservado geralmente para a inclusão de
arquivos do projeto.
Diretiva #include aninhados
Arquivos de inclusão podem ter diretivas #include neles. Isso é denominado
includes aninhados. O número de níveis de aninhamento varia entre
compiladores. Porém, o padrão C ANSI estipula que pelo menos oito níveis de
inclusões aninhadas estão disponíveis.
”Mãe, eu quero ter o
meu próprio arquivo
no #include"
Manter a casa organizada com #include
core_math.c
#include "core_math.h"
int cm_double(int x){
 return x * 2;
}
core_math.h
#ifndef core_math_h
#define core_math_h
int cm_double(int x);
#endif
main.c
#include <stdio.h>
#include "core_math.h"
int main() {
 printf("%d",cm_double(4));
 return 0;
}
Diretivas de Compilação Condicionais
São diretivas que permitem que sejam complilados seletivamente trechos de código fonte.
Este processo é conhecido por compilação condicional e é utilizado para facilitar programas
que precisam manter diversas versões de um programa.
As mais comumente utilizadas são:#if, #else, #elif, #endif
E outras como: #ifdef, #ifndef (volte um slide e veja o exemplo)
Diretivas de Compilação Condicionais
#include <stdio.h>
#define VERSAO 5
int main(){
 
 #if VERSAO < 5
printf ("Para continuar utilizando atualize o sistema\n");
 return 1;
 #elif VERSAO >=5 && VERSAO < 10
printf ("recomensa-se atualizar o sistema\n");
 #endif
printf("linhas de codigo do programa\n");
 
 return 0;
}
Dúvidas

Continue navegando