Mit Präprozessor-Anweisungen geht das einfach und der code wird nicht unnötig aufgeblasen. Schau dir z.b. mal io.h an, dort wird das so gelöst.

#if defined (__AVR_ATmega8U2__)
# //do stuff
#elif defined (__AVR_ATmega16M1__)
# //
...
usw
...
#else
# //
#endif