## in Dateinamen von includes

Gast #3728502
Lesenswert?

Hallo!

In Abhängigkeit eines Makros werden unterschiedliche Header inkludiert, 
aber immer nur eins.
1
#define TEST
2
//#define TYPE_A
3
//#define TYPE_B
4

5
#ifdef TEST
6
#include "rk_test.h"
7
#endif
8
#ifdef TYPE_A
9
#include "rk_type_a.h"
10
#endif
11
#ifdef TYPE_B
12
#include "rk_type_b.h"
13
#endif

Daher kam mir der Gedanke das mit einer Preprozessor-Anweisung zu 
machen:
1
#define CONFIG_FILE test
2
//#define CONFIG_FILE type_a
3
//#define CONFIG_FILE type_b
4

5
#include "rk_##CONFIG_FILE##.h"

Nur geht das leider (so) nicht. :-(

Auch irgendwelche Zwischenschritte, brachten kein Erfolg:
1
#define CONFIG_FILE test
2
//#define CONFIG_FILE type_a
3
//#define CONFIG_FILE type_b
4

5
#define FILENAME rk_##CONFIG_FILE##.h 
6
//#include FILENAME
7
#include "FILENAME"

Gibt es eine Möglichkeit meine Idee umzusetzen?

Danke & Grüße
Harald
#3729658
Lesenswert?

Dass das eine "Element" mit einem Punkt beginnt, macht etwas 
Probleme(*), aber so was geht problemlos:
1
#define CAT3_(a,b,c)  a##b##c
2
#define CAT3(a,b,c)  CAT3_(a,b,c)
3

4
#define STR_(s)  #s
5
#define STR(s)  STR_(s)
6

7

8
#define CONFIG_FILE  test
9

10
#include STR(CAT3(rk_,CONFIG_FILE,_.h))


(*) mit .h kommt dieser Fehler:
1
pasting "rk_test" and "." does not give a valid preprocessing token

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