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)
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?
Wie man Fragen richtig stellt:
http://www.lugbz.org/documents/smart-questions_de.html
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.
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.
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.
Wie man Fragen richtig stellt:
http://www.lugbz.org/documents/smart-questions_de.html
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.
Wie man Fragen richtig stellt:
http://www.lugbz.org/documents/smart-questions_de.html
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
Lesezeichen