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.