Projectabhängige includes #defines zusammenfügen?

Gast #2689953
Lesenswert?

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
#2689962
Lesenswert?

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
Gast #2689967
Lesenswert?

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
Moderator Persönliche Seite #2690018
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren