Makefile:
DEBUGFLAGS= -DDEBUG_A
Datei:
#ifdef DEBUG_A
test = 6;
#else
test = 9;
#endif
So Leute ich habe ein kleines Problem. Ich habe im Makefile DEBUG_A
definiert.
In meinem Program will ich je nach dem ob das Define da ist oder nicht
die Variable test verändern. Leider ist, egal ob DEBUGFLAGS= -DDEBUG_A
da ist oder nicht, test immer 9.
habt ihr ne Idee waran das liegen könnte?
IchHeuleGleich schrieb:> habt ihr ne Idee waran das liegen könnte?
DEBUGFLAGS wird nicht an den Compiler gegeben...
Wie sieht die Kommandozeile des Compileraufrufs aus?
Ein Problem ist erst dann tatsächlich 'gelöst', wenn du exakt und genau
verstehst, wie es entstanden ist. Vorher ist es nur ein 'aus den Augen,
aus dem Sinn'.
Und genau das ist eines der generellen Probleme unserer Zeit: Wir lösen
Probleme nicht mehr, wir sorgen nur dafür, dass sie keiner mehr sieht.
Wir fragen uns nicht, wie wir unsere Müllberge grundsätzlich wegkriegen
sondern wir türmen den Müll zu Bergen auf und schütten Erde drüber. Bis
sich dann in 20 Jahren zeigt, dass sich dadurch alles nur noch
verschlimmert hat und eine Sanierung 100 mal so viel kostet, als wie
wenn man gleich eine bessere Lösung als simples Verstecken angestrebt
hätte.
IchHeuleGleich schrieb:> Problem gelöst.>> ich habe das define einfach in die Datei verschoben.>> Trotzdem Danke
Das ist doch blöd.
Der Sinn ist doch daß du das einmal in makefile definierst (oder beim
make Aufruf sogar mitgibst und das dann in allen h und c files wirkt.
So musst du es mindestens in einem zentralen H file definieren und dann
aber sicherstellen daß dieses h file in allen anderen c und h files am
Anfang includiert ist.
Du hättest einfach im make file beim compiler aufruf die DEBUGFLAGS mit
übergeben müssen.
Karl Heinz Buchegger schrieb:> Bis sich dann in 20 Jahren zeigt, dass sich dadurch alles nur noch> verschlimmert hat und eine Sanierung 100 mal so viel kostet,
Hundertmal? Du bringst mich auf eine Idee: ich melde mal schon ein
Gewerbe als Müllkippensanierer an. Denn schon an der Aufschüttung konnte
man sich da schnell eine goldenen Nase verdienen...
@ IchHeuleGleich
Ich denke auch, dass dich dieser Workaround nochmal einholt. Und das
dauert weniger als 20 Jahre...
Das Prob ist immer die Zeit. So kann ich jetzt weiterarbeiten. Wenn das
Problem das nächjste mal auftritt muss ich es lösen.
Für Vorschläge zur Lösung wäre ich trotzdem dankbar.
IchHeuleGleich schrieb:> Für Vorschläge zur Lösung wäre ich trotzdem dankbar.
Sag mal willst du uns verarschen?
Was glaubst du ist das?
Udo Schmitt schrieb:> Du hättest einfach im make file beim compiler aufruf die DEBUGFLAGS mit> übergeben müssen.
IchHeuleGleich schrieb:> Das Prob ist immer die Zeit. So kann ich jetzt weiterarbeiten. Wenn das> Problem das nächjste mal auftritt muss ich es lösen.> Für Vorschläge zur Lösung wäre ich trotzdem dankbar.
Du musst noch viel lernen :-)
Jedes Problem, das du ungelöst vor dir herschiebst, kostet dich auf
lange Sicht gesehen mehr Zeit, als wie wenn du dich gleich um eine
Lösung bemühst.
Irgendwann sieht das jeder ein, das die 'Ich hab zwar keine Ahnung warum
aber solange es jetzt funktioniert ist es gut' Strategie keine gute
Strategie ist. Alles schon hundertemale passiert. Und noch jedes
einzelne mal war es so, dass ich mir hinterher gewünscht hätte, ich
hätte das Problem gleich richtig gelöst, anstatt nur ein 'Heftpflaster'
draufzukleben.
> Das Prob ist immer die Zeit.
Da hast du recht. Aber anders als du denkst.
Noch dazu, wo man bei deinem Problem höchst wahrscheinlich mit einem
Blick ins Makefile das Problem in weniger als 2 Minuten lösen könnte.
@ Udo:
wenn du mit deinem Leben unzufrieden bist. Lass es bitte nicht an mir
aus:
Makefile:
DEBUGFLAGS= -DDEBUG_A
@Karl Heinz Buchegger:
makefile kommt heute abend. habe es auf einem anderen Rechner.
IchHeuleGleich schrieb:> wenn du mit deinem Leben unzufrieden bist. Lass es bitte nicht an mir> aus:>> Makefile:> DEBUGFLAGS= -DDEBUG_A
Das kann nicht das komplette Makefile sein.
Ausserdem ist es an dieser Stelle (noch) uninteressant, was du da
konkret hingeschrieben hast. Entscheidend ist: Wo wird DEBUGFLAGS
verwendet! Wird das überhaupt beim Compileraufruf mitgegeben? Derartige
Variablen kannst du im Makefile haben so viele du willst. So lange sie
beim tatsächlichen Build dann nicht verwendet werden, ist das alles
Schall und Rauch.
IchHeuleGleich schrieb:> @ Udo:>> wenn du mit deinem Leben unzufrieden bist. Lass es bitte nicht an mir> aus:
Er ist nicht mit seinem Leben, sondern mit deiner Antwort unzufrieden.
Du fragst nach einer Lösung, obwohl diese gerade davor schon genannt
wurde.
Um's nochmal ausführlich zu erklären:
Du kannst natürlich in deinem Makefile eine Variable DEBUGFLAGS
definieren und da irgendwas reinschreiben. Dann liegt die da erstmal so
rum. Dem Compiler ist das allerdings völlig wurscht. Der sieht diese
Variable nicht mal. Du kannst sie genausogut HURRZ nennen und "Blubblub"
reinschreiben, das hat den selben Effekt. Wenn die Variable auch eine
Auswirkung haben soll, muß erstmal irgendwas damit getan werden. In
diesem Fall müßtest du im Makefile dort, wo der Compiler aufgerufen
wird, den Inhalt der Variable an diesen übergeben.
Rolf Magnus schrieb:> Dem Compiler ist das allerdings völlig wurscht. Der sieht diese> Variable nicht mal.
Aus diesem Grund fragte ich schon im
Beitrag "Re: ifdef unklar"
nach der Compiler-Kommandozeile. Die sieht man meistens in der Konsole
der aufrufenden IDE. Oder im Logfile...
Um es für unseren TE mal auf Programmiersprach-Niveau umzumünzen:
Das, was du da gerade machst, ist ungefähr so, als würdest du in
deinem C-Programm eine Variable definieren:
1
constcharmessage[]="Das ist alles Mist hier!";
und dann erwarten, dass ebendiese Mitteilung beim Start des
Programms auf ganz magische Weise von allein auf das LCD
ausgeschrieben wird, nur weil die Variable doch schließlich
"message" heißt.
IchHeuleGleich schrieb:> makefile kommt heute abend. habe es auf einem anderen Rechner.
Tja, dann ist jetzt ja alles klar, seid (seid gestern) das Makefile "da"
ist.
Kann nicht funktionieren, ist leer!
Eine eigene Frage?
Dieser Thread ist über 14 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.