[C++] Duda sobre macros

No me queda del todo claro, dado ese macro:

#define DeclararPiezas(jugador,dirrecion) Tablero[0][dirrecion] = jugador(TORRE); \
Tablero[1][dirrecion] = jugador(CABALLO); \
Tablero[3][dirrecion] = jugador(REY); \
Tablero[4][dirrecion] = jugador(REINA); \
Tablero[5][dirrecion] = jugador(ALFIL); \
Tablero[6][dirrecion] = jugador(CABALLO); \
Tablero[7][dirrecion] = jugador(TORRE); \
#if dirrecion ABAJO
#define aux 1
#else
#define aux -1
#endif \
for (int i = 0; i < 8;i++) \
     Tablero[i][dirrecion+aux] = jugador(PEON);


Dado un jugador y una orientacion (ARRIBA o ABAJO). Se declara un tablero de ajedrez. Ahora bien, para poner los peones no es tan sencillo puesto que dependiendo si esta arriba o abajo tengo que sumar 1 o restar 1.

He hecho ahí una prueba (#if dirrecion abajo) pero evidentemente el compilador no se lo traga. ¿Alguna idea?
Tengo el C++ bastante oxidado, pero juraría que aunque se trate de directivas para el preprocesador, los condicionales siguen necesitando operador (el de igualdad en este caso, ==), ¿no?
1 respuesta