ifdef unklar

Gast #2688786
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
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
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
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...
Gast #2689613
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.
#2689649
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
@ 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
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
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
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

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.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.