-         

Ergebnis 1 bis 7 von 7

Thema: gcc erkennen?

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2004
    Ort
    Karlsruhe
    Beiträge
    223

    gcc erkennen?

    Anzeige

    Hi,

    ich möchte vorhandenen Code so umschreiben dass er sich mit dem avr-gcc bauen lässt. Soweit kein Problem, aber ich würde gerne das über defines machen, damit der "alte" Compiler auch noch "kann". Dazu müsste der Preprocessor den GCC erkennen ... Jetzt such ich da das passende define dazu. __GCC__ scheint vom avr-gcc nicht definiert zu werden. Any hints?

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Kannst du nicht in der make-file selber was eintragen ?

    Andererseits kannst du ja jedes x-beliebige symbol nehmen, wo sich die Kompiler unterscheiden. (Auch das nicht-vorhandensein)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    GCC listet dir alle (impliziten) defines auf mit

    xyz-gcc -E -dM dummy.c

    Für ein backend xyz gibt es die defines XYZ und __XYZ, für AVR also AVR und __AVR.

    Ebenfalls interessant für dich sind
    __GNUC__
    __GNUC_MINOR__
    __GNUC_PATCHLEVEL__

    Wenn xyz-gcc -v dir sagt "gcc version a.b.c", dann bekommst du a, b und c über obige 3 Makros.
    Disclaimer: none. Sue me.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2004
    Ort
    Karlsruhe
    Beiträge
    223
    ich hab zwischenzeitlich noch ne andere Möglichkeit gefunden:
    #if CC == GCC
    /* wenn GCC kompiliert */
    #endif

    Ansonsten hab ich ja gerade ein Symbol gesucht wo sich die Compiler unterscheiden -- und da wäre eins was für den GCC speziell ist halt optimal Weiß jemand ob es da irgendwelche Probleme mit dem CC geben kann? Interessanterweise wird das auch ohne Makefile gesetzt, also wenn ich den GCC einfach so aufrufe.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.801
    Nö, da hätt ich Einwände. GCC ist bestimmt kein #define von GCC.
    CC ist ne implizite make-Variable (so wie CFLAGS, etc). Wie kommst du da im Präprozessor dran?
    Dann müsste so was wie -DCC=$(CC) im Makefile stehen.
    Jedenfalls wird für CC kein define berichtet mit -E -dM von oben.
    Oder #if CC == GCC ist immer wahr, weil beide undefiniert sind.

    Mit
    #ifdef __GNUC__
    #if defined (__GNUC__)
    sollte es gehen.
    Disclaimer: none. Sue me.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2004
    Ort
    Karlsruhe
    Beiträge
    223
    tatsächlich, CC scheint auf alles zu matchen -- habs mal ausprobiert:
    #if CC == GCC
    #warning GCC
    #endif
    #if CC == icc
    #warning icc
    #endif

    wirft mir sowohl GCC als auch icc raus. Werde wohl doch das __GNUC__ nehmen. Find ich sowieso schöner

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    01.08.2005
    Ort
    49.80248 8.59252
    Alter
    33
    Beiträge
    172
    In der fleury lib gibt es sowas.
    Code:
    #if (__GNUC__ * 100 + __GNUC_MINOR__) < 303
    
    #error "This library requires AVR-GCC 3.3 or later, update to newer AVR-GCC compiler !"
    
    #endif

Berechtigungen

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