Hi, ich steh hier grad vor nem kleinen Problem. Ich will's mal kurz beschreiben. Ich habe 4 Dateien, main.c, main.h, lib.c und lib.h. In main.c werden die beiden .h Files mit #include importiert. Soweit noch alles klar. Jetzt möchte ich aber die Lib so gestalten das man per #define unterschiedliche Sachen compilieren kann. Das könnte ich natürlich in der lib.h machen, aber da habe ich das Problem das ich das für jede Applikation u.U. anpassen muß. D.h. ich möchte die bedingte Compilierung in das eigentliche Projekt packen ohne an der Lib was ändern zu müssen. Ich möchte die Lib Files auch nur ungern in jeden Projektordner kopieren. Wenn man an der Lib was ändert muß man alle Kopien durchgehen und darf keine Fehler machen. Am liebsten wäre es mir wenn man die Defines für die Lib in der Datei main.h machen könnte, aber der Lib ist die Datei ja nicht bekannt. Ich nehme mal an die einzige Möglichkeit ist es diese Defines ins Makefile oder in die Kommandozeile zu packen, aber wie geht das? Oder gibt es noch einen anderen Weg? Schonmal danke dennis
importiere die main.h doch in deine lib.h ;) oder setz die defines in der main.c und importiere dann die lib.h gruss
wow, schnelle Antwort, danke. Das mit dem Import von main.h in die lib.h geht nicht weil ich damit schon wieder die lib selbst ändere. Das will ich ja grad vermeiden. Die Defines vor dem Import könnte gehen. dennis
hm, funktioniert leider doch nicht. Wenn ich in main.c ein Define anlege ist das Define nur in der lib.h bekannt, aber nicht in lib.c
Du kannst das wie folgt machen. Deine Lib.h haengt von ein paar #define-ments ab, die defineirt werden muessen, bevor Lib.h copmiliert wird. Also zb. Lib.h ***** #ifdef USE_PI #define PI 3.141592654 #endif #ifdef USE_IRGENDWAS void Irgendwas( void ); #endif In Der main.c, dort wo Du die Lib.h inkludierst, definierst Du dann ganz einfach all das was Du von der Lib.h haben moechtest: main.c ****** #define USE_PI /* #define USE_IRGENDWAS */ /* die will ich nicht */ #include "Lib.h" int main() { double j = PI; /* geht, da ueber USE_PI in Lib.h ja eine Definition fuer PI angefordert wurde */ Auch wenn normalerweise die #define-s das erste in einer Datei sind, muss das nicht so sein. #define kann ueberall stehen, und Du kannst davor machen was auch immer Du willst.
Muss nactuerlich heissen: Auch wenn die #includes-s das erste ... #include kann ueberall .... Verdamm... wieso merkt man sowas immer erst in der Sekunde in der man auf 'Submit' gedrueckt hat?
Hallo, ähnliches Problem hatte ich auch mal, ich hatte ein Modul, dass von mehreren Projekten benutzt wurde, und schließlich auch unterschiedliche Hardwareversionen eines Projektes. Man kann in das makefile defines einbinden, so z.B.: HWVERSIONMAJOR = 2 HWVERSIONMINOR = 0 CDEFS += -DHWVERSIONMAJOR=$(HWVERSIONMAJOR) CDEFS += -DHWVERSIONMINOR=$(HWVERSIONMINOR) Im Sourcecode habe ich dann #if (HWVERSIONMAJOR == 2) blabla #endif #if (HWVERSIONMAJOR == 3) blabla #endif Stefan
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.