Forum » Programiranje » [C] parse error
[C] parse error
ql000 ::
Pozdrav vsem skupaj!
Pišem (prepisujem) driver za LAN W3100A čip iz 8051 arh. v kodo (C jezik), da jo bo razumel PIC mikrokontroler. Pojavi se mi problem, ko hočem prevest nekaj takega:
header datoteka ima definiran:
potem pa to zadevo kličem v main.c:
Kompiler mi javi parse error in pokaže na vrstico v main.c. Kaj ne štima?
Pišem (prepisujem) driver za LAN W3100A čip iz 8051 arh. v kodo (C jezik), da jo bo razumel PIC mikrokontroler. Pojavi se mi problem, ko hočem prevest nekaj takega:
header datoteka ima definiran:
#define I2CHIP_BASE 0x8000 #define INT_REG (*((volatile u_char xdata *)(I2CHIP_BASE + 0x08))
potem pa to zadevo kličem v main.c:
void neka_funk(void) { u_char status; status = INT_REG; // parse error }
Kompiler mi javi parse error in pokaže na vrstico v main.c. Kaj ne štima?
- spremenil: ql000 ()
OwcA ::
En zaklepaj premalo (pri #define INT_REG)?
Otroška radovednost - gonilo napredka.
Zgodovina sprememb…
- spremenilo: OwcA ()
ql000 ::
Sorry, sem ga pozabil natipkat v post! V kodi imam tretji zaklepaj pa zadeva še vedno ne deluje! Na enem forumu sem zasledil, da naj najprej deklariram union preden deklariram prototip funkcije. Samo kje!?
OwcA ::
Zakaj pa union (kej sploh to uporabljaš)? V vsakem primeru dvomim v to diagnozo, če bi bil kak nepoznan simbol bi se drugače pritožil.
Poskusi mogoče INT_REG izpisati v vrstici z napako.
Poskusi mogoče INT_REG izpisati v vrstici z napako.
Otroška radovednost - gonilo napredka.
OwcA ::
status = (*((volatile u_char xdata *)(I2CHIP_BASE + 0x08))
Če je še vedno parse error v tej vrstici je nekaj narobe z izrazom (potem ga poenostavljaš dokler ne dela), drugače dogaja preprocesorju.
Če je še vedno parse error v tej vrstici je nekaj narobe z izrazom (potem ga poenostavljaš dokler ne dela), drugače dogaja preprocesorju.
Otroška radovednost - gonilo napredka.
OwcA ::
Ni, sem poskusil na ICC 9 (kar se mene tiče najboljša implementacija ANSI C in zlasti C++) in pravi:
če odstranim xdata, pa požre brez pritoževanja.
error: type name is not allowed
če odstranim xdata, pa požre brez pritoževanja.
Otroška radovednost - gonilo napredka.
Zgodovina sprememb…
- spremenilo: OwcA ()
ql000 ::
Zgleda, da ga jebe ta xdata v #definu! Problem je v tem, ker se mi xdata pojavljan povsod:
header:
A je ta koda (*((volatile char xdata *)(I2CHIP_BASE + 0x0A))) samo kazalčna aritimetika ali je kaka višja znanost tu not?
header:
#define COMMAND(i) (*((volatile char xdata *)(I2CHIP_BASE + i))) #define INT_STATUS(i) (*((volatile char xdata *)(I2CHIP_BASE + 0x04 + i))) //#define INT_REG (*((volatile char xdata *)(I2CHIP_BASE + 0x08))) #define INTMASK (*((volatile char xdata *)(I2CHIP_BASE + 0x09))) #define RESETSOCK (*((volatile char xdata *)(I2CHIP_BASE + 0x0A)))
A je ta koda (*((volatile char xdata *)(I2CHIP_BASE + 0x0A))) samo kazalčna aritimetika ali je kaka višja znanost tu not?
OwcA ::
xdata ne poznam, ostalo pravi
vrednost kazalca na naslov I2CHIP_BASE + 0x0A tipa u_char, ki se lahko nenadno spremeni.
vrednost kazalca na naslov I2CHIP_BASE + 0x0A tipa u_char, ki se lahko nenadno spremeni.
Otroška radovednost - gonilo napredka.
OwcA ::
Sem se malo izobrazil o xdata.
Sicer ni rešitev, ampak lahko poskusiš dati čisto na začetek programa
#define xdata
A prevajalnik naj bi načeloma to podpiral tudi v kakšnih bolj eksotičnih situacijah kot je z volatile?
Sicer ni rešitev, ampak lahko poskusiš dati čisto na začetek programa
#define xdata
A prevajalnik naj bi načeloma to podpiral tudi v kakšnih bolj eksotičnih situacijah kot je z volatile?
Otroška radovednost - gonilo napredka.
ql000 ::
Ja, ja ta xdata ga serje! Xdata se uporablja za mapiranje memorije v 8051 arhitekturi! Kar pomeni, da ga jaz, če uporabim besednjak Braneta2, z orgazmičnim užitkom pobrišem!
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C] LPC1343 - UART - AT commandsOddelek: Programiranje | 1139 (1029) | JanezovJanez |
» | C in funkcije ter #defineOddelek: Programiranje | 3964 (2325) | misek |
» | [baze] Povezava do slike ali BLOB?Oddelek: Programiranje | 1666 (1463) | BlueRunner |
» | [c++] segmentation fault?????Oddelek: Programiranje | 2309 (1853) | Vesoljc |
» | [java ali C] Datoteka v obliki 0 in 1Oddelek: Programiranje | 1853 (1573) | Mmm'Aah |