compiler directive issue

Plaats reactie
pascal
Berichten: 152
Lid geworden op: za jan 18, 2020 9:36 pm

compiler directive issue

Bericht door pascal »

Aan de compiler (gcc-avr) geef ik het volgende mee -D MCU=atmega328p

In mijn code het volgende

Code: Selecteer alles

#if MCU == atmega328p
#warning "Configured for 328p"
#define BLAAT blahblah
#endif

#if MCU == atmega2560
#warning "Configured for 2560"
#define BLAAT blohbloh
#endif
Ik krijg steeds beide meldingen
en obviously een waarschuwwing dat BLAAT dubbel toegewezen is.
Begrijp niet waarom deze situaltie zo is.

heb het wel als volgt opgelost
-D MCU_atmega328p

Code: Selecteer alles

#ifdef MCU_atmega328p
#warning "Configured for 328p"
#define BLAAT blahblah
#endif

#ifdef MCU_tmega2560
#warning "Configured for 2560"
#define BLAAT blohbloh
#endif
Maar het blijft toch een beetje poep zo.
Vivo ergo onus

Gebruikersavatar
vi coactus
Berichten: 184
Lid geworden op: zo jan 19, 2020 12:02 pm

Re: compiler directive issue

Bericht door vi coactus »

Fijn dat je wat allemaal doet, maar waarom gebruik je niet gewoon:

Code: Selecteer alles

-mmcu=
Plus, leer F_VAR of wat dan ook te gebruiken, zal me niets verbazen als MCU sowieso al gedefinieerd is.
+2: Niet van #elif gehoord?

pascal
Berichten: 152
Lid geworden op: za jan 18, 2020 9:36 pm

Re: compiler directive issue

Bericht door pascal »

-mmcu geeft de compiler aan voor welke cpu hij moet compileren, niet welke specifieke code er gekozen moet worden.
Embedded software is meer dan een andere CPU kiezen, ook je hardware is totaal anders.

if / endif if / endif en if else endif is werkelijk iets heel anders.
Vivo ergo onus

Gebruikersavatar
vi coactus
Berichten: 184
Lid geworden op: zo jan 19, 2020 12:02 pm

Re: compiler directive issue

Bericht door vi coactus »

Nu doe je alsof ik nooit gcc-avr gebruikt heb..
Jij doet vast hoog intelligente dingen waar ik te dom voor ben.

pascal
Berichten: 152
Lid geworden op: za jan 18, 2020 9:36 pm

Re: compiler directive issue

Bericht door pascal »

het gaat niet enkel om gcc-avr, in fact ik gebruik zelden avr
Vivo ergo onus

Gebruikersavatar
vi coactus
Berichten: 184
Lid geworden op: zo jan 19, 2020 12:02 pm

Re: compiler directive issue

Bericht door vi coactus »

In dit geval gaat het er gewoon om wat je wilt bereiken.
Er bestaan namelijk onder andere de volgende variabelen die de compiler meegeeft:

Code: Selecteer alles

#define __AVR_ATmega8__ 1
#define __AVR_DEVICE_NAME__ atmega8
Dus een #ifdef __AVR_ATmega8__ etc is voldoende als je gewoon wilt weten welke processor je gebruikt.
Waar het bij jou zeer waarschijnlijk misgaat is in de preprocessor.
Voeg -Wundef toe aan je compile ding. Je kunt ook nog met -dM kijken welke variabelen er zijn, allicht wat nuttigs waardoor je niet meer hoeft te kijken naar welke precieze cpu je gebruikt, maar naar de functies die je nodig hebt.

Plaats reactie