#ifdef funktioniert nicht



  • Hallo,

    ich habe zwar seit Jahren nicht mehr in C programmiert,
    kam aber bis heute eigentlich wieder klar.

    Jetzt habe ich aber ein Problem, bei dem ich nicht
    weiter weiß. Ich habe mein Programm mal aufs Wesentliche
    gekürzt, damit ihr es einfacher habt mir zu helfen.

    #include <stdio.h>
    
    /* Defines für Prozessor /*
    
    #define	PC	1
    
    /* Defines für Gebetszeitenberechnung */
    
    #define TAG2005 1827.5	/* 0. Januar 2005 */
    
    int main() {
    #	if PC
    	 printf("Hello World\n");
    #	endif
    }
    

    Ich bekomme es ums Verrecken nicht hin, daß mir "Hello World"
    ausgegeben wird, obwohl PC doch auf 1 (ungleich 0) gesetzt ist. 😮

    Suche in Online Referenzbücher für C haben mir auch
    nicht helfen können 😞

    Welchen Fehler mache ich? (das # mit dem if
    zu verbinden, ist nach Präprozessor-Sprachdefinition nicht nötig)



  • #ifdef nehmen



  • feigling schrieb:

    #ifdef nehmen

    Das würde aber bedeuten, daß ich sämtliche
    #if's verändern müßte?

    Und die Präpozessor-Sprachdefinition ermöglicht
    doch ausdrücklich da #if, warum sollte ich dann
    darauf verzichten?



  • feigling schrieb:

    #ifdef nehmen

    #ifdef geht ja auf einmal auch nicht mehr 😮

    #include <stdio.h>
    
    /* Defines für Prozessor /*
    
    #define	PC	1
    
    /* Defines für Gebetszeitenberechnung */
    
    #define TAG2005 1827.5	/* 0. Januar 2005 */
    
    int main() {
    #ifdef PC
    	printf("Hello World\n");
    #endif
    system("pause");
    }
    

    Ich benutze DEV-CPP.
    Könnte es vielleicht sein, daß er die
    Präprozessor-Anweisungen ignoriert? Muß ich
    die irgendwo extra aktivieren? 😕

    In der Hilfe hab' ich nichts dazu gefunden. 😞



  • Java-Progger schrieb:

    Könnte es vielleicht sein, daß er die
    Präprozessor-Anweisungen ignoriert? Muß ich
    die irgendwo extra aktivieren? 😕

    Kommando zurück! Da hab' ich Blödsinn gefaselt.

    Wenn die Präprozessor-Anweisungen nicht eingeschaltet
    wären, würde mein gesamtes Programm ja gar nicht
    kompilierbar sein. *schäm*

    Was mache ich bloß falsch?

    Ich werd' noch wahnsinnig!!!

    (und das kurz vorm Wochenende)



  • Deine int main hat keinen Rückgabewert.

    return 0;



  • Danke! Aber daran kann's ja nicht liegen

    (Hat keinen Rückgabewert, da das endgültige
    Programm auf einem Micro-Prozessor als Endlosschleife
    laufen wird)



  • So funktionierts bei mir:

    #include <stdio.h>
    
    /*Defines für Prozessor*/
    
    #define    PC    1
    
    /* Defines für Gebetszeitenberechnung */
    
    #define TAG2005 1827.5    /* 0. Januar 2005 */
    
    int main() {
      #ifdef PC
        printf("Hello World\n");
      #endif
      getchar();
      return 0;
    }
    


  • Und du hast die "Hello World" - Ausgabe auf dem Schirm?

    Aber warum klappts dann auf meinem Rechner nicht.

    Liegts etwa doch an Dev-CPP?



  • ich nehme wxDev-C++ - damit gehts



  • Die Zeile:

    /*Defines für Prozessor/*
    

    bewirkt, dass alles (auch danach) als Kommentar gilt.
    Richtig ists so:

    /*Defines für Prozessor*/
    


  • *sichindiehintersteeckeverkrümelnderJavaProgger*

    (Ein Gentleman genießt und schweigt....)



  • Java-Progger schrieb:

    Das würde aber bedeuten, daß ich sämtliche
    #if's verändern müßte?

    ja, denn #if und #ifdef 2 völlig unterschiedliche Makros sind.

    Mit #if kannst du Abfragen, ob Makros gleich, größer, kleiner (sprich arithmetisch) sind. Mit #ifdef ob mein Makro definiert ist.



  • kannst auch '#if defined' nehmen 😉


Anmelden zum Antworten