10.1 Orden
#define
La
orden
#define
permite definir
macros.
Entre otras cosas, se utiliza para declarar constantes simbólicas:
#define TAM_VECTOR 100
...
struct Datos vector [TAM_VECTOR];
La
sintaxis general de este uso de
#define
es
#define
símbolo
texto_sustituto
símbolo
puede ser cualquier identificador utilizable en C y
texto_sustituto
es cualquier ristra de caracteres, sin restricción.
El
preprocesador trocea el fichero fuente en palabras. Cada vez que se encuentre
con la palabra
símbolo
la sustituye por
texto_sustituto,
sin tener en cuenta nada más.
Si
en el
texto_sustituto
aparecen palabras que en realidad son macros, se sustituyen.
#define BEGIN {
#define PROGRAM main() BEGIN
#define END }
#define BUCLE for (i=0;i<N;i++)
...
PROGRAM
int i;
BUCLE
BEGIN
printf ( "paso número %d\n", i );
END
END
Este
ejemplo refleja un abuso del preprocesador, dado que el código no parece
C y resulta poco legible.
Hay
que tener cuidado con las expresiones en el texto sustituto:
#define DIEZ 10
#define VEINTE 20
#define TREINTA DIEZ + VEINTE
main()
{
printf ( "El resultado es: %d\n", TREINTA*TREINTA ); /* ¿Qué se obtiene? */
}
En
el caso anterior, la solución era definir así la macro:
#define TREINTA (DIEZ + VEINTE)