Datum:
Hallo, ich habe folgendes vor: -------------------- File: Project.h #define PROJECT "Test" #include "Lib.h" ------------------- File: Lib.h #include PROJECT "_Tasten.h" //"Test_Tasten." ------------------- -> Ziel ist es das je nach definition von PROJECT andere Dateien eingebunden werden leider bekomme ich die defines nicht zusmmangefügt. Jemand eine Idee? Danke
Datum:
Hallo sofern ich das jetzt verstanden habe suchst du nach der ifdef Anweisung Also in lib.h #ifdef PROJECT #include "_Tasten.h" #endif Also sofern du PROJECT irgendwo definiert hast (#define PROJECT) ist die "If defined" Präprozessoranweisung erfüllt und _Tasten.h wird inkludiert. Hast du das so gemeint? L.g. Michael
Datum:
Michael Rathmair schrieb: > Hallo sofern ich das jetzt verstanden habe suchst du nach der ifdef > Anweisung > > Also in lib.h > > #ifdef PROJECT > #include "_Tasten.h" > #endif > > Also sofern du PROJECT irgendwo definiert hast (#define PROJECT) ist die > "If defined" Präprozessoranweisung erfüllt und _Tasten.h wird > inkludiert. > > Hast du das so gemeint? > > L.g. Michael Hallo, nein das habe ich nicht gemeint. Es soll includiert werden test_tasten.h im project ist #define PROJECT "test" definiert. Danke
Datum:
#define CATx(a,b) a##b #define CAT(a,b) CATx(a,b) #define STRx(a) #a #define STR(a) STRx(a) #define PROJECT Test #include STR(CAT(PROJECT,_Tasten.h)) |
Datum:
Ich vermute mal das geht nicht weil include ebenfalls eine Präprozessor Anweisung ist. Ich hab es aber nicht überprüft was der der Präprozessor macht.
Datum:
Rene H. schrieb: > Ich hab es aber nicht überprüft was der der Präprozessor > macht. Du hättest du nur einfach Stefans Code durch den Präprozessor jagen müssen:
$ echo "hi" > Test_Tasten.h $ cc -E - #define CATx(a,b) a##b #define CAT(a,b) CATx(a,b) #define STRx(a) #a #define STR(a) STRx(a) #define PROJECT Test #include STR(CAT(PROJECT,_Tasten.h)) ^D # 1 "<stdin>" # 1 "<built-in>" # 1 "<command line>" # 1 "<stdin>" # 11 "<stdin>" # 1 "Test_Tasten.h" 1 hi # 11 "<stdin>" 2 |
Datum:
Jo, habe ich eben schnell gemacht, Du warst schneller :-). Funzt fabelhaft.
Datum:
Stefan Ernst schrieb: > #define CATx(a,b) a##b > #define CAT(a,b) CATx(a,b) > > #define STRx(a) #a > #define STR(a) STRx(a) Dass man mit CAT() Symbole zusammenfügen kann weiß ich, aber wozu dient das STR()?
Datum:
Micha schrieb: > Stefan Ernst schrieb: >> #define CATx(a,b) a##b >> #define CAT(a,b) CATx(a,b) >> >> #define STRx(a) #a >> #define STR(a) STRx(a) > Dass man mit CAT() Symbole zusammenfügen kann weiß ich, aber wozu dient > das STR()? Es macht aus dem Argument ein String-Literal. STR(hallo) -> "hallo"