- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 31

Thema: Preprocessor, bedingte Compilierierung

  1. #11
    HaWe
    Gast
    Anzeige

    Praxistest und DIY Projekte
    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' // ???

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    entschuldige, noch einfacher kann ich es nicht erklären als dass

    #define Option_A 1

    bedeutet dass der Begriff "Option_A" durch eine "1" ersetzt wird, also als beispiel zu dem was ich geschrieben habe

    #define OPTION_A 1

    wenn ich im Code "OPTION_A" schreibe macht er eine "1" draus

    #define OPTION_A 1
    #define MARKO_1 OPTION_A
    #define MAKRO_2 MAKRO_1
    ....
    #define MAKRO_1234 MAKRO_1233

    wenn ich jetzt "MAKRO_1234" im Code verwende wird immernoch eine "1" draus, denn MAKRO_1234 = MAKRO_1233 = .... = MAKRO_1 = OPTION_A = 1

    also ist #if MAKRO_200==1 > TRUE genauso wie #if MAKRO_200==OPTION_A

    wenn dir der begriff enumeration bekannt ist sollte das eigentlich nicht schwer zu verstehen sein

    wenn es doch zu kompliziert klingt, akzeptiere bitte meine antwort: "Es geht nicht!" ... ich habe dieses mal sogar von anfang an referenzen serviert um es zu belegen!
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  3. #13
    HaWe
    Gast
    verstehe ich nicht, warum so kompliziert?
    ich habe doch gar keine 3 #define Makros
    #define OPTION_A 1
    #define MARKO_1 OPTION_A
    #define MAKRO_2 MAKRO_1

    ich habe lediglich 1 Makronamen
    #define TARGET 1
    den ich abfragen will, und das soll anstatt Zahlen jetzt Buchstaben abfragen können. also stattdessen
    #define TARGET 'Z'

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    wenn es doch zu kompliziert klingt, akzeptiere bitte meine antwort: "Es geht nicht!"
    es geht nur über den umweg deine buchstaben als zahlen zu codieren

    dann mach halt
    #define A 1
    #define B 2
    #define C 3

    ABER (ACHTUNG WICHTIG) bedenke dass JEDES MAL wenn du ein A Schreibst plötzlich eine 1 dafür gesetzt wurd und wenn du B schreibst plötzlich eine 2

    Deswegen würde dieser weg keinen sinn machen!


    FAZIT (damit kannst du das
    Thema als erledigt markieren): Es geht nicht, der Precompiler kann nur mit Zahlen arbeiten
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  5. #15
    HaWe
    Gast
    #define A 1
    #define B 2
    #define C 3
    ich habe keine 3 verschiedenen Makros, nur 1 !!
    den Wert passe ich an und setze ihn ein, wenn ich aktuell ein bestimmtes Board angesteckt habe, zum Hochladen.
    Anderes Bord = anderer Wert für TARGET, dann ebenfalls neu komp.+hochladen.
    ABER (ACHTUNG WICHTIG) bedenke dass JEDES MAL wenn du ein A Schreibst plötzlich eine 1 dafür gesetzt wurd und wenn du B schreibst plötzlich eine 2
    genau deswegen nenne ich mein Makro ja auch TARGET und nicht A oder B, was ja sonst Unsinn wäre.

    Und warum soll eine Zahl gehen, aber kein Buchstabe?

  6. #16
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    Und warum soll eine Zahl gehen, aber kein Buchstabe?
    weils so ist, weil der standard das nicht voesieht ... vermutlich sogar weil es einfacher ist eine begrenzte zahl interner variablen vozuhalten um damit mathematisch zu rechnen als dynamisch speicher für strings allokieren zu müssen und stringcompare routinen vorzuhalten ... frag die macher des c-standards

    entschuldige meine offenheit aber deine verbohrtheit immer nur mundgerechte häppchen zu verlangen macht es sehr schwer sachlich mit dir zu reden
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  7. #17
    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)

  8. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    deswegen sollte man sich auf die lösung mit dem grünen haken fixieren das ist dann in 99% der fälle die lösung die jeder akzeptiert

    wenn du 'Q' schreibst besteht der hauch einer chance dass der precompiler das vorher intern in seine ascii zahl "81" umwandelt, das ist aber keinenfalls standard und funktioniert vermutlich nur mit den allerwenigstens compilern

    es geht jedenfalls nicht bis hin zu C11 bzw. C2011 compilern, danach schien der standard wohl neue möglichkeiten zu bieten

    (und so kompliziert wie dort ist es ja gar nicht mal bei mir)
    die ursprüngliche frage deckt sich exakt mit deiner .. nur ein wenig anders formuliert, schade dass du das so nciht erkennst ... wo wir wieder beim thema "über den tellerrand gucken" wären
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  9. #19
    HaWe
    Gast
    achso, der zitierte Code geht gar nicht bei Arduino C++, weil es nicht standardmäßig bereits C++11 ist? Ist das der Grund?
    (was ist ein grüner Haken?)

  10. #20
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    bis hin zu C11 bedeutet C11 eingeschlossen ... alles danach ist wohl intelligenter aber auch komplizierter zu nutzen

    arduino standard meines wissens nach ist c99 also c1999
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

Seite 2 von 4 ErsteErste 1234 LetzteLetzte

Ä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
  •  

Solar Speicher und Akkus Tests