/**
* Preprocesador.cpp
* Programa c++ que muestra el uso del preprocesador.
*
* Pello Xabier Altadill Izura
* Compilacion: g++ -o Preprocesador Preprocesador.cpp
*
*/
// include se utiliza para poder utilizar codigo externo,
// generalmente las librerias standar o nuestras propias librerias
using namespace std;
#include <iostream>
// Las variables de preprocesador sirven para que el compilador haga ciertas
// modificaciones en el codigo fuente
#define PI 3.1415
#define BATMAN "Bruce Wayne"
#define MISTERX "Felipe Gonzalez"
#define REVELAR
#define BUFFER 255
// podemos definir FUNCIONES, aunque sin complicarlas ya que dificulta
// la depuracion y se pasa el tipado de variables por el arcoltriunfo
#define PORCENTAJE(a,b) (a*b)/100
// Guardias de inclusion
// Estructura condicional para evitar multiples inclusiones
// La siguiente structura comprueba si NO se ha definido la variable FSTREAM
#ifndef FSTREAM
// si no se ha definido, la definimos
#define FSTREAM
#include <fstream>
#endif // fin de condicion
// macro de comillas:
#define write(x) cout << #x << endl;
int main () {
int i = 345;
float var = 4.67;
char buffer[BUFFER]; // automaticamente el compilador traduce: buffer[255]
#ifdef PI
cout << "El valor PI es: " << PI << ": ten fe en el caos" << endl;
#else
cout << "PI no esta definido..." << endl;
#endif
// ahora miramos una variable de preprocesador que no esta:
// y asi en este caso no se revelamos quien es BATMAN...
#ifdef REVELAR
cout << "Batman realmente se trata de: " << BATMAN << endl;
#endif
// con esta orden eliminamos la variable:
#undef REVELAR
// y este es el efecto:
#ifdef REVELAR
cout << "MisterX realmente es: " << MISTERX << endl;
#endif
cout << "var * PI = " << (var * PI) << endl;
// mostramos la llamada a la funcion
cout << "Porcentaje 15% de "<< i << " es: " << PORCENTAJE(i,15) << endl;
// llamada a la macro. Atencion, convertira MISTERX?
write(Hay que ver que lujo verdad MISTERX);
return 0;
} |