I have a rather simple question related to my Move Generation and wanted to know where you guys are drawing the line with your #defines. I know in chess engines speed is preferred over readability. I used defines for my north, south, .... moves. Now that I'm getting into more of the moves the readability / good code practice side of me is fighting with the optimized side. And I'm wondering what you guys are doing related to this topic.
MoveGeneration.h :
extern BitBoard getWhitePawnPushTargets(BitBoard whitePawns, BitBoard emptySquares);
MoveGeneration.c
BitBoard getWhitePawnPushTargets(BitBoard whitePawns, BitBoard emptySquares) {
return NORTH_ONE(whitePawns) & emptySquares;
}
or
MoveGeneration.h
#define GET_WHITE_PAWN_PUSH_TARGETS(whitePawns, emptySquares) (NORTH_ONE(whitePawns) & emptySquares)