Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

04.10.2010, 12:47

Was bedeutet L ?

Hallo zusammen!

Ich lese nun schon eine längere Weile mit. Das Forum ist eine schönen Ergänzung zu den beiden Büchern.
Eines habe ich bis jetzt aber noch nicht gefunden.
(Mir kam kein Einfall, wonach ich suchen sollte... ?( )

Was bedeutet in folgender Code-Zeile das L?

Zitat

wchar_t wszStr[] = L"1a1g"; (aus MSDN, C++ String Literals)
Dass das ein Char-Array ist, ist klar. (glaube ich zumindest :whistling: )

Sollte es einfach eine Markierung für ein Literal sein?
Falls ja: Wieso muß das extra angegeben werden?

Wer macht mich wissend?

Besten Gruß und Danke,
Sleepwalker

idontknow

unregistriert

2

04.10.2010, 12:54

wegen Unicode?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

04.10.2010, 12:57

Das eine sind mehrere chars, das andere mehrere wide-chars. Ersteres lässt sich mit dem Präfix L passend "konvertieren".

Geht: char bla[] = "foo";
Geht nicht: wchar_t bla[] = "foo";
Geht: wchar_t bla[] = L"foo";
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

4

04.10.2010, 13:02

Das war ja mal ne schnelle Antwort!
Aber was soll mir das sagen?
Bist du dir nicht sicher? (Wegen des Fragezeichens)
Oder ist das eine Aussage die in eine Frage verpackt ist?

Jetzt habe ich noch mehr Fragen... menno. 8|

Dennoch: Warum wäre es notwendig, das als Unicode zu kennzeichnen (wenn das die Antwort wäre) ?

Edit: Oooops, da hat ja zwischenzeitlich BlueCobold geantwortet.
Aber wieso ist diese Konvertierung notwendig?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Sleepwalker« (04.10.2010, 13:10)


idontknow

unregistriert

5

04.10.2010, 13:07

weiß es selber nicht wirklich, außer dass es mit Unicode zusmamen hängt. Ich benutz idR einfach immer Multibyte wenn ich da irgendwie Probleme habe (nicht unbedingt DIE Lößung..)

Aber BlueCobold hats ja bereits beantwortet!

Forang

Frischling

Beiträge: 23

Wohnort: Wesel

Beruf: Schule

  • Private Nachricht senden

6

04.10.2010, 13:07

Das L sagt dem Compiler, dass es sich um ein const wchar_t * handelt und nicht wie normal um ein
const char * .

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

7

04.10.2010, 13:15

Aber wieso ist diese Konvertierung notwendig?

Weil das nunmal verschiedene Typen sind. Das eine braucht 1 Byte pro Zeichen, das andere 2. Und Typ-Konvertierungen sind notwendig in Programmiersprachen, auch wenn es in diesem speziellen Fall wohl relativ eindeutig ist, was gemeint ist. Compiler arbeiten aber eben nicht nach dem Motto: "Ach, der meint bestimmt das und das", sondern interpretieren alles nach strikten Regeln. Und in den Regeln steht eben, dass ein "Literal" mehrere char sind und nicht mehrere wchar_t.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

8

04.10.2010, 13:25

Dass Typ-Konvertierungen notwendig sind/sein können, ist bekannt.
Das neue für mich war nun die unterschiedliche Größe der Typen.

Dass das L eine Typumwandlung veranlass konnte ich mir nicht denken, da der Unterschied zw. den Typen nicht bekannt war.
Bzw. das Wissen um die Relevanz.
Daher das genaue Nachhaken.

Danke an Alle für die Mühe!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

04.10.2010, 13:42

Das L ist auch keine Typkonvertierung es kennzeichnet nur dass es sich um ein wide string literal handelt. Das ist alles.

10

04.10.2010, 13:55

OK, dann nehme ich das mal als gegeben hin.

Werbeanzeige