Der Block weist a den Letzen Ausdruck als Ergebnis zu.
Verhält sich dieser neue scope wie eine namenlose Inline-Funktion und
Rückabewert ist immer der Letzte Ausdruck?
Ohne runde Klammern drumm geht es auch nicht.
1 | a=(
|
2 | {
|
3 | uint8_t result;
|
4 | uint8_t a=10;
|
5 | uint8_t b=20;
|
6 | a+b; //mach irgendwas
|
7 | result=a+b+b;
|
8 | a+a+b; //mach irgendwas
|
9 | result;
|
10 | }
|
11 | );
|
12 | //a ist 50
|
Auf diese Weise gibt pgm_read_byte() ( verschachteltes Makro das auf
__LPM_classic__(addr) führt )
aus pgmspace.h (avr-gcc lib) den __result; nach dem
_asm_ -Zeugs, hier in v zurück:
1 | const uint8_t v = pgm_read_byte(bitmap + i);
|