Macro en C

Hola! Estoy estudiando un código escrito en ANSI C y me he encontrado con cosas de este estilo:
   #ifdef FULL_DUPLEX
   // set the PDPXMD full duplex mode bit on the phy
   #define ENC_REG_PHCON1_VALUE (0x0000 | (1 << ENC_BIT_PDPXMD))
   ENC_REG_PHCON1, HI8(ENC_REG_PHCON1_VALUE), LO8(ENC_REG_PHCON1_VALUE),
   #endif


He estado Googleando y he visto que se trata de una macro. El problema es que sigo sin entender qué es lo que hace.

¿Alguien me puede echar una mano?
GRACIAS!!!
Asi en plan rapido, una macro como esa, lo que hace es una "funcion en tiempo de compilacion", digamoslo asi...
Es decir, ves que es un "if", no? Ese "IF" no es para el compilador, sino para el preprocesador. Este pillara ese if de esa macro, y pondra una cosa u otra en el codigo que luego le pasara al compilador, dependiendo de una serie de cosas (en este caso, si esta definida cierta variable).

Es un poco como PHP, que lo que hace es generar el HTML necesario para una pagina, dinamicamente (que luego """compilara""" el navegador), pues parecido.
1 respuesta