Forum: Compiler & IDEs Textersetzung im Präprozessor innerhalb von Strings möglich?


von Harald Umlaut (Gast)


Lesenswert?

Kann man mit dem Präprozessor im gcc irgendwie einzelne Zeichen durch 
andere ersetzen lassen? Also automatisch?

Hintergrund: Ich gebe Strings, die ich im Flash habe, auf einem LCD aus. 
Das ist ein Standard-HD44780 wie man sie problemlos über Ebay bekommt. 
Der Zeichensatz ist auch ok und für A-Z, a-z und 0-9, Punkt, Komma und 
andere Standardzeichen kein Problem. Umlaute allerdings schon.

Ich muss z.B. statt "Lüfter" immer "Lõfter" schreiben. Total doof und 
die pure Schikane, denn sowas Simples muss doch eigentlich der Rechner 
machen können, also zur Compilezeit versteht sich. Nur wie?

von Peter II (Gast)


Lesenswert?

die paar Sonderzeichen kann man auch zu Laufzeit bei der Übergabe zum 
Display ersetzen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Harald Umlaut schrieb:
> Ich muss z.B. statt "Lüfter" immer "Lõfter" schreiben.
1
#define ue "õ"
2
3
...
4
   printf("L" ue "fter");
5
   // oder
6
   printf("L"ue"fter");

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Jörg W. schrieb:
>    // oder
>    printf("L"ue"fter");

In C++ >= 11 wegen String-Suffix:
1
#define ue "ue"
2
const char *a = "L"ue"fter";
1
2:17: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Johann L. schrieb:
> In C++ >= 11 wegen String-Suffix:

OK, kannte ich noch nicht.

Normalerweise tendiere ich auch dazu, lieber ein paar Spaces mehr
zu schreiben, aber gerade hier ist der Lesefluss natürlich besser,
wenn man die Leerzeichen weglässt.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dem gcc kann man das "execution characterset" mitteilen:
1
-fexec-charset=charset
2
3
    Set the execution character set, used for string and character
4
    constants. The default is UTF-8. charset can be any encoding 
5
    supported by the system’s iconv library routine.

Wenn man also die iconv-Library des Systems um eine Variante für das 
44780 erweitern könnte, wäre das Problem gelöst.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.