/*
 * F. de Sande
 * 7.12.2001
 * Este programa ilustra la utilización de macros
 * La macro ALFA toma 2 parámetros (a y b) y si el valor del parámetro a
 * que se le pase es 1, escribe tantas veces como indique el parámetro b
 * el valor del primer parámetro.
 * Se ha escrito a propósito la macro en varias líneas para ilustrar la
 * utilización del caracter \ para separar las diferentes lineas de la
 * macro.
 * Es interesante cuando se trabaja con macros utilizar la opción -E del
 * compilador gcc Al compilar un programa con la opción -E, lo que se hace
 * es el preprocesado del fichero, con lo cual no actúa el analizador léxico
 * o el sintáctico del compilador de C sino sólo el preprocesador: el efecto
 * de la opción es que se sustituyen los ficheros incluidos por su contenido
 * y se realiza la expansión de las macros.
 */

#include <stdio.h>

#define ALFA(a, b) {                      \
  int k;                                  \
                                          \
  if(a == 1) {                            \
    for(k = 0; k < b; k++) {              \
      printf("i es %d\n", a);             \
    }                                     \
  }                                       \
  else                                    \
    printf("El valor de i es: %d\n", a);  \
}

int main(void) {
  int i, repe;

  printf("Introduzca i: ");
  scanf("%d", &i);
  printf("Introduzca repeticiones: ");
  scanf("%d", &repe);
  ALFA(i, repe);
}

