Witam ostatnio mam problem tego typu, że gdy chcę użyć makr z książki to wyrzuca mi błędy.
definicje.h
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
przerwanie.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
main.c
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Błędy:
13:17:54 **** Incremental Build of configuration Release for project Projekt_z_glowy ****
make all
'Building file: ../przerwanie.c'
'Invoking: AVR Compiler'
avr-gcc -Wall -Os -fpack-struct -fshort-enums -ffunction-sections -fdata-sections -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega8 -DF_CPU=8000000UL -MMD -MP -MF"przerwanie.d" -MT"przerwanie.o" -c -o "przerwanie.o" "../przerwanie.c"
In file included from ../przerwanie.c:2:0:
../przerwanie.c: In function 'ini':
../definicje.h:31:18: error: pasting "DDR" and "(" does not give a valid preprocessing token
#define SDDR(x) (DDR##x)
^
../definicje.h:30:16: note: in expansion of macro 'SDDR'
#define DDR(x) SDDR(x)
^
../przerwanie.c:6:2: note: in expansion of macro 'DDR'
DDR(P_CYFR) |= (A | B | C | D | E | F | G | DOT );
^
../przerwanie.c:6:2: warning: implicit declaration of function 'DDR' [-Wimplicit-function-declaration]
../przerwanie.c:6:14: error: lvalue required as left operand of assignment
DDR(P_CYFR) |= (A | B | C | D | E | F | G | DOT );
^
In file included from ../przerwanie.c:2:0:
../definicje.h:25:19: error: pasting "PORT" and "(" does not give a valid preprocessing token
#define SPORT(x) (PORT##x)
^
../definicje.h:24:17: note: in expansion of macro 'SPORT'
#define PORT(x) SPORT(x)
^
../przerwanie.c:7:2: note: in expansion of macro 'PORT'
PORT(P_CYFR) &=~ (A | B | C | D | E | F | G | DOT );
^
../przerwanie.c:7:2: warning: implicit declaration of function 'PORT' [-Wimplicit-function-declaration]
../przerwanie.c:7:15: error: lvalue required as left operand of assignment
PORT(P_CYFR) &=~ (A | B | C | D | E | F | G | DOT );
^
In file included from ../przerwanie.c:2:0:
../definicje.h:31:18: error: pasting "DDR" and "(" does not give a valid preprocessing token
#define SDDR(x) (DDR##x)
^
../definicje.h:30:16: note: in expansion of macro 'SDDR'
#define DDR(x) SDDR(x)
^
../przerwanie.c:9:2: note: in expansion of macro 'DDR'
DDR(P_ANOD) |= (A1 | A2 | A3 | A4);
^
../przerwanie.c:9:14: error: lvalue required as left operand of assignment
DDR(P_ANOD) |= (A1 | A2 | A3 | A4);
^
In file included from ../przerwanie.c:2:0:
../definicje.h:25:19: error: pasting "PORT" and "(" does not give a valid preprocessing token
#define SPORT(x) (PORT##x)
^
../definicje.h:24:17: note: in expansion of macro 'SPORT'
#define PORT(x) SPORT(x)
^
../przerwanie.c:10:2: note: in expansion of macro 'PORT'
PORT(P_ANOD) |= (A1 | A2 | A3 | A4);
^
../przerwanie.c:10:15: error: lvalue required as left operand of assignment
PORT(P_ANOD) |= (A1 | A2 | A3 | A4);
^
make: *** [przerwanie.o] Błąd 1
Wie ktoś czym to jest spowodowane?