#if #endif etc.



  • Hi

    also folgendes ich habe eine *.h datei nennen wir sie mal A.h, dazu gehört eine *.c Datei, die A.c, dann habe ich noch eine dritte *.c Datei die test.c worin sich sozusagen mein Hauptprogramm befindet.
    Die A.h ist folgendermaßen aufgebaut.

    #ifndef A_H
    #define A_H

    #if TYPE == double
    definiere datenstruktur
    #elif TYPE == int
    definiere datenstruktur

    #endif

    In der test.c habe ich eine Variable die auf #define TYPE int gesetzt wird.
    In der a.c findet sich dann noch folgender ausschnitt

    #if TYPE == double
    nimm spez. funktion
    #elif TYPE == int
    nimm andere funktion
    #endif

    Ich hab nun eigentlich erwartet das wenn ich in der test.c den TYPE "switche" auch die richtige Funktion aufgerufen wird, nur tut sie das nicht...
    Wie mach ich das also richtig mit dem präprozessor?

    bye

    tt



  • In der test.c

    Da ist der Fehler! am besten ist es, wenn du dem compiler als parameter -DTYPE=int (ist das so richtig?! lies am besten in der compiler-doku nach) übergibst.
    Die .c werden einzeln kompiliert. wenn du also in test.c ein makro (so nennt sich das) TYPE definierst, gilt das nur für test.c, nicht mehr für a.c.


Anmelden zum Antworten