Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Präprozessor expandiert nicht!

  1. #1
    Registrierter Benutzer
    Registriert seit
    29.02.2004
    Beiträge
    113

    Präprozessor expandiert nicht!

    Hey Amigos, wie geht's?

    Ich möchte einen (C)-Header über mehrere Unterverzeichnisse verteilen. In foobar.h steht also nur sowas drin:
    Code:
    #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

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    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

    Code:
    #define __FILE__(A) "A/header.h"
    ...
    #include __FILE__(dir)
    MfG Peschmä
    Geändert von peschmae (09-09-2005 um 14:50 Uhr)
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    29.02.2004
    Beiträge
    113
    Das Problem ist, daß ich den Namen des Headers expandieren lassen will, nicht das Directory!

    Gruß,
    /dev

  4. #4
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Ja, und. Genau das macht doch mein Sample
    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ä
    Geändert von peschmae (10-09-2005 um 08:03 Uhr)
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  5. #5
    Registrierter Benutzer
    Registriert seit
    22.03.2001
    Beiträge
    650
    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)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •