Projectabhängige includes #defines zusammenfügen?

Gast #2689953
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
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
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
Gast #2689990
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.
Moderator Persönliche Seite #2690018
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
#2690923
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"

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.