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?
No me queda claro qué quieres hacer, pero me da la impresión de que no te hacen falta macros.
Además si el compilador no se lo traga, pon los errores que te dé.
Saludos.
Basicamente, soy un vago y no quiero escribir lo mismo dos veces xD. Además quedaría el código más elegante:
DeclararPiezas(Jugador1)
DeclararPiezas(Jugador2)
El error que me daba era que faltaba un # para el argumento? La cuestión esque quiero saber como comprobar el valor de los argumentos proporcionados.
Creo que en esta línea:
#if dirrecion ABAJO
puedes usar el operador '==', tal que así:
#if direccion==ABAJO
Sin embargo, supongo que ABAJO debe ser un valor constante.
Nanay, tampoco.
A la **** pondre una variable aux y a liarla:
char aux = dirrecion == ABAJO ? 1 : -1;