Я у себя всё равно включаю <avr/io.h>, требующий С-шного препроцессора и раз уж так, то варианты компиляции разбираю тем препроцессором - #if defined(foo) || defined(moo). Конечно, оно жрёт только C-шные же #define, а асм-имена из-под .set и подобно не ест.