Makros für Strings?



  • Hallo,
    ich habe ein Makro, welches so aussieht...

    #define TEST "TEST"\
      "lol"\
      "1337"\
      "!"
    

    nun brauche ich eine Unicode-Version dieses Markos. Leider funktioniert #define W_TEST TEXT(TEST) nicht. Das L wird zwar korrekt vor den String gehängt, aber leider gilt das L dann nur für den ersten Teil des Strings ("TEST") und nicht für die restlichen Teile.

    Was kann ich machen?



  • #define W_TEST L"TEXT"\
       L"lol"\
       L"1337"\
       L"!"
    


  • @Tip: Und was, wenn der Grundstring von außen vorgegeben ist? 😉

    @Macr0: Ich würde mal sagen, da bist du an die Grenzen des Präprozessors gekommen - sture Text-Ersetzung reicht eben in manchen Fällen nicht aus (_T() ist idR definiert als "#define _T(str) L##str" - und das hängt nur an den Anfang des String (in deinem Fall an den ersten Teilstring) das nötige L an (und das passiert afaik, bevor die einzelnen Teilstrings verkettet werden).

    Ich weiß nicht, ob das in deinem Fall eine Lösung ist, aber eventuell kannst du von Makros ausweichen auf echte Funktionen:

    #define TEST "TEXT" \
      "ECHO"
    
    #define WTEST A2T(TEST)
    //oder
    USES_CONVERSION;
    const TCHAR* WTEST = A2T(TEST);
    


  • Wenn du nur eine von beiden gleichzeitig brauchst, dann mach es doch so:

    #define TEST _T("TEST")\
      _T("lol")\
      _T("1337")\
      _T("!")
    

Anmelden zum Antworten