GCC listet dir alle (impliziten) defines auf mit

xyz-gcc -E -dM dummy.c

Für ein backend xyz gibt es die defines XYZ und __XYZ, für AVR also AVR und __AVR.

Ebenfalls interessant für dich sind
__GNUC__
__GNUC_MINOR__
__GNUC_PATCHLEVEL__

Wenn xyz-gcc -v dir sagt "gcc version a.b.c", dann bekommst du a, b und c über obige 3 Makros.