PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Präprozessor expandiert nicht!



Deever
09-09-2005, 14:32
Hey Amigos, wie geht's?

Ich möchte einen (C)-Header über mehrere Unterverzeichnisse verteilen. In foobar.h steht also nur sowas drin:
#include "subdir1/__FILE__"
#include "subdir2/__FILE__"Leider wird hier __FILE__ nicht durch den Wert "foobar.h" ersetzt, sondern der Präprozessor bricht ab mit der Meldung, daß die Datei "subdir1/__FILE__" nicht gefunden werde. Wie kann ich das beheben?

Vielen Dank für eure Antworten!
Gruß,
/dev

peschmae
09-09-2005, 14:46
Soviel ich weiss ersetzt der Makroprozessor nur ganze Tokens, d.h. ein alleinstehendes __FILE__ und halt entsprechend nicht wenn was drumherum steht ohne Leerzeichen dazwischen.

Ne Lösung wäre eventuell was in die Richtung von



#define __FILE__(A) "A/header.h"
...
#include __FILE__(dir)


MfG Peschmä

Deever
09-09-2005, 20:30
Das Problem ist, daß ich den Namen des Headers expandieren lassen will, nicht das Directory! ;)

Gruß,
/dev

peschmae
10-09-2005, 08:01
Ja, und. Genau das macht doch mein Sample :confused:
Zumindest mehr oder weniger. Macht halt die Definition des file-Makros etwas komplizierter, aber ne Alternative kann ich jetzt auch gerade nicht vorschlagen.

MfG Peschmä

nobody0
10-09-2005, 09:54
Zum Zusammenbasteln von Strings kann man Standard-Makros nehmen:

// standard macros (K&R A.12, C-FAQs 11.17)
# define mc_CAT(x, y) x ## y

# define mc_XCAT(x, y) mc_CAT(x, y)

# define mc_STR(x) #x

# define mc_XSTR(x) mc_STR(x)