ifdef unklar

Gast #2688786
Lesenswert?

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?
#2688814
Lesenswert?

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.
#2688818
Lesenswert?

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.
Moderator (Firma: Titel) Persönliche Seite #2688820
Lesenswert?

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...
#2689649
Lesenswert?

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.
Gast #2689652
Lesenswert?

@ 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.
#2689660
Lesenswert?

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.
Gast #2689687
Lesenswert?

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.
Moderator Persönliche Seite #2689703
Lesenswert?

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
const char message[] = "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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren