This may help answer why: http://arduino.land/FAQ/content/2/12/en/why-do-#ifdef-macro_s-stop-the-sketch-from-compiling.html
Also this may help your board selection. ( replace CHIPSET macro with whatever you like ).
// 168 and 328 Arduinos
#if defined(__AVR_ATmega168__) ||defined(__AVR_ATmega168P__) ||defined(__AVR_ATmega328P__)
#define CHIPSET ATmega_168_168P_328P
// Mega 1280 & 2560
#elif defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
#define CHIPSET ATmega_1280_2560
// Sanguino
#elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__)
#define CHIPSET ATmega_644_644P_1284P
#elif defined(__AVR_ATmega32U4__)
// Teensy 2.0
#ifdef CORE_TEENSY
#define CHIPSET ATmega_32U4_A
// Teensy
#else
#define CHIPSET ATmega_32U4_B
#endif
// Teensy++ 1.0 & 2.0
#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
#define CHIPSET AT90USB_646_1286
#endif