Du kannst übersetzen mit -save-temps -g3 (oder höher).
Im präprozessierten Progamm (*.i für C, *.ii für C++) findest du dann
sowas wie:
1 | # 1 "<built-in>"
|
2 | #define __STDC__ 1
|
3 | #define __STDC_VERSION__ 201112L
|
4 | ...
|
5 | # 1 "<command-line>"
|
6 | #define __AVR_ATmega8__ 1
|
7 | #define __AVR_DEVICE_NAME__ atmega8
|
8 | # 1 "foo.c"
|
9 | # 1 "e:\\winavr\\5.2.1\\avr\\include\\stdio.h" 1 3
|
10 | # 40 "e:\\winavr\\5.2.1\\avr\\include\\stdio.h" 3
|
11 | #define _STDIO_H_ 1
|
12 |
|
13 |
|
14 |
|
15 | # 1 "e:\\winavr\\5.2.1\\avr\\include\\inttypes.h" 1 3
|
16 | # 35 "e:\\winavr\\5.2.1\\avr\\include\\inttypes.h" 3
|
17 | #define __INTTYPES_H_
|
18 | ...
|
__INTTYPES_H_ wird also in Zeile 35 von inttypes.h
defined, __AVR_ATmega8__ hingegen per Kommandozeilen-Option(*)
-D__AVR_ATmega8__ oder -D__AVR_ATmega8__=1
(*) Bis v4.9 ist __AVR_ATmega8__ ein Built-In Define von avr-gcc, ab v5
wird das Makro über ein spec-File definiert
($prefix/lib/gcc/avr/$version/device-specs/specs-atmega8).