- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 31

Thema: Preprocessor, bedingte Compilierierung

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast
    Zitat Zitat von Ceos Beitrag anzeigen
    ansichtssache, ich finde die andere richtung problematischer aber du könntest dir ein beispiel and en arduino libs nehmen die machen heftigstens gebrauch davon
    welche? ich habe bisher noch keine praktische Erfahrung mit so etwas. Auch das oberste Beispiel mit den Zahlen stammt aus einem Tutorial.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    also ich habe einen artikel gefudnen der sagt dass es nicht geht, nur mit umwegen und mangels arduino lib hab ich mal meine atmel libs befragt und die amchen ebenfalls den umweg über ifdef oder zahlenersetzungen

    damit wird aus -mmcu=atxmega128a4u -> #ifdef _AVR_ATXMEGA128A4U über eine funktion des avr-gcc

    ich ahbe das bei arduino ähnlich gesehen, lass dir doch mal die befehlszeile für deinen compiler anzeigen und such nach der boardbezeichnung und Suche dann im ganzen projekt danach, vielleicht hilft das

    https://stackoverflow.com/questions/...sor-directives
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  3. #3
    HaWe
    Gast
    Zitat Zitat von Ceos Beitrag anzeigen
    also ich habe einen artikel gefudnen der sagt dass es nicht geht, nur mit umwegen und mangels arduino lib hab ich mal meine atmel libs befragt und die amchen ebenfalls den umweg über ifdef oder zahlenersetzungen

    damit wird aus -mmcu=atxmega128a4u -> #ifdef _AVR_ATXMEGA128A4U über eine funktion des avr-gcc

    ich ahbe das bei arduino ähnlich gesehen, lass dir doch mal die befehlszeile für deinen compiler anzeigen und such nach der boardbezeichnung und Suche dann im ganzen projekt danach, vielleicht hilft das

    https://stackoverflow.com/questions/...sor-directives
    ich will ja nicht über #ifdef arbeiten, sondern über #if TARGET==...

    aber tatsächlich scheint es jetzt mit Buchstaben genau so zu klappen wie mit Zahlen, offenbar ist für den pp doch alles nur eine Zeichenkette.
    (Zuerst hatte es nicht geklappt . jetzt aber doch, wschl war ein typo die Urasche... ich probiere aber jetzt auch die anderen Konstanten-Werte durch...)

    - - - Aktualisiert - - -

    edit,
    ja, zuerst scheint der pp im Code bei
    #define TARGET Z
    das Vorkommen von TARGET "blind" durch Z zu ersetzen, und dann überprüft er
    #if Z==Z
    //...
    #elif Z==D
    //...
    was eben True oder False ist. So wäre das stimmig.

    - - - Aktualisiert - - -

    nee, geht doch nicht.
    Ich muss dann wohl bei den Zahlen bleiben, oder?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    siehe artikel und beispiele darin
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  5. #5
    HaWe
    Gast
    hmm, da sind in der Diskussion eindeutig zuviele Buchstaben mit unverständlichem Wenn und Aber und teilw auch völlig ohne verständlichen Sinn.

    Das hier mit den Hochkommata scheint aber doch am aussichtsreichsten zu sein - oder verstehe ich das falsch:
    #define CHOICE 'J'
    #if 'J' == CHOICE
    //...

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    nein das Beispiel war einfacher
    Code:
    #define OPTION_A 1
    #define OPTION_B 2
    ^^^^^^^^^^^^^ das sind deine wortersetzungen für ziffern, man könnte auch enumeration dazu sagen
    
    define SELECTED OPTION_A 
    damit triffst du die wahl ... kann auch außerhalb in den compiler settings passieren
    
    #if SELECTED==OPTION_A
    #elif SELECTED==OPTION_B
    #endif
    für den PC sieht dass dann aus dass OPTION_A durch eine 1 und OPTION_B durch eine 2 ersetzt werden und du bei #define SELECTED XXXXXX eine Zahl zur Auswahl eingibts

    Du kannst Makros in Makros in Markos in Markso verwenden ... das geht zwar ein wenig zu Weit aber wenn du mal von X Makros hörst, lass dir gesagt sein .. sie sind MÄCHTIG ... aber auch mächtig kompliziert
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  7. #7
    HaWe
    Gast
    kapier ich nicht, was du damit sagen willst, das ist mir zu hoch und viel zu sehr verkompliziert.
    Was geht ist das:
    #define TARGET 1
    #if TARGET==1


    Die Frage ist, ob die Entsprechung für Buchstaben dies hier ist:
    #define TARGET 'Z'
    #if TARGET=='Z' // ???

  8. #8
    HaWe
    Gast
    ok, wenns absolut nicht ginge, wäre es ja ok -
    aber in deinem Link schreibt doch einer, dass es doch ginge mit Buchstaben wie 'Q'?
    https://stackoverflow.com/questions/...sor-directives
    The answere by Patrick and by Jesse Chisholm made me do the following:

    #define QUEEN 'Q'
    #define JACK 'J'

    #define CHECK_QUEEN(s) (s==QUEEN?1:0)
    #define CHECK_JACK(s) (s==JACK?1:0)

    #define USER 'Q'

    [... later on in code ...]

    #if CHECK_QUEEN(USER)
    compile_queen_func();
    #elif CHECK_JACK(USER)
    compile_jack_func();
    #elif
    #error "unknown user"
    #endif

    Instead of #define USER 'Q' #define USER QUEEN should also work but was not tested also works and might be easier to handle.
    das ist das, was ich hasse, wenn man Diskussionslinks als Antwort auf eine Frage gibt - da antworten dann 100 Leute mit 200 verschiedenen Meinungen....

    (und so kompliziert wie dort ist es ja gar nicht mal bei mir)

Ähnliche Themen

  1. bedingte Compilierung in BASCOM
    Von jguethe im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 30.09.2012, 00:09

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress