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
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
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
1 | #define CATx(a,b) a##b
|
2 | #define CAT(a,b) CATx(a,b)
|
3 | |
4 | #define STRx(a) #a
|
5 | #define STR(a) STRx(a)
|
6 | |
7 | |
8 | #define PROJECT Test
|
9 | |
10 | |
11 | #include STR(CAT(PROJECT,_Tasten.h))
|
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.
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:
1 | $ echo "hi" > Test_Tasten.h |
2 | $ cc -E - |
3 | #define CATx(a,b) a##b |
4 | #define CAT(a,b) CATx(a,b) |
5 | |
6 | #define STRx(a) #a |
7 | #define STR(a) STRx(a) |
8 | |
9 | |
10 | #define PROJECT Test |
11 | |
12 | |
13 | #include STR(CAT(PROJECT,_Tasten.h)) |
14 | ^D |
15 | # 1 "<stdin>" |
16 | # 1 "<built-in>" |
17 | # 1 "<command line>" |
18 | # 1 "<stdin>" |
19 | # 11 "<stdin>" |
20 | # 1 "Test_Tasten.h" 1 |
21 | hi |
22 | # 11 "<stdin>" 2 |
Jo, habe ich eben schnell gemacht, Du warst schneller :-). Funzt fabelhaft.
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()?
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"
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.