domingo, 7 de abril de 2013

Pré processador


Seguinte. Tem coisas que o programa faz antes de abrir a telinha que a gente vê. Os comandos que são interpretados pelo pré processador são aqueles iniciados em #: includes, macros e condicionais.

Os includes:
#include <stdio.h> //<> já reconhece bibliotecas “defaults”
#include “minhalib.h” //se for personalizada é entre aspas

As macros:
#define MAX 100
#define nome_macro texto_equivalente
Se uma macro ficar muito grande pra caber numa linha só, é só colocar uma barra invertida ( \ ) que o programa continua lendo. Ele só para de ler aquela macro quando acha uma linha sem a \.

É possível ter funções feitas com macros, assim:
#define MILHAS_KM(m) m*(8.0/5.0)
#define MULTI(a,b) ((a)*(b))

você chama a função escrevendo MILHAS_KM(sua_var) ou MULTI(v1,v2) e ele faz aquelas continhas! E pode ter comandos mais complexos:
#define IMPRIME_MSG(msg) \
printf ("Mensagem: %s\n", msg);
uso: IMPRIME_MSG("erro na fase y");

OBSERVAÇÃO IMPORTANTE: entre o nome da sua macro e a definição dela não pode ter espaço! Se eu colocasse #define MULTI (a, b) ← espaço entre a palavra e o parêntesis – daria errado porque no lugar de MULTI ele escreveria (a, b). O espaço só pode vir depois do nome inteiro.

As condicionais:
#if SISTEMA_OPERACIONAL== 1
  #include "windows.h"
#elif SISTEMA_OPERACIONAL == 4
  #include "hpux.h"
#else
  #error Sistema operacional não definido ou inválido
#endif
Só vai incluir “windows.h” se o SO definido for 1. A estrutura tem que ser essa chata aí mesmo

O resto:
#ifdef EXEMPLO //se tiver a define EXEMPLO
#ifndef EXEMPLO //se NÃO tiver a define EXEMPLO
#undef EXEMPLO //apaga a define EXEMPLO

Nenhum comentário:

Postar um comentário