was macht ein L vor einer Zeichenkette und warum funktioniert das bei mir nicht?
-
Hallo,
Ich sehe sehr häufig L's vor Zeichenketten:
V_RETURN( DXUTFindDXSDKMediaFileCch( str, MAX_PATH, L"Tutorial09.fx" ) ); V_RETURN( g_Mesh.Create( pd3dDevice, L"Tiny\\tiny.sdkmesh", true ) ); DXUTCreateWindow( L"Tutorial09" );Welche bedeutung haben die, und warum bekomme ich Fehler, wenn ich
die in mein Code einbau, Fehlt dazu eine Bibliothek?Grüße
-
L steht da für Unicodezeichenketten.. Also "wchar_t".
-
adonis schrieb:
Hallo,
Ich sehe sehr häufig L's vor Zeichenketten:
V_RETURN( DXUTFindDXSDKMediaFileCch( str, MAX_PATH, L"Tutorial09.fx" ) ); V_RETURN( g_Mesh.Create( pd3dDevice, L"Tiny\\tiny.sdkmesh", true ) ); DXUTCreateWindow( L"Tutorial09" );Welche bedeutung haben die, und warum bekomme ich Fehler, wenn ich
die in mein Code einbau, Fehlt dazu eine Bibliothek?Grüße
Kommt drauf an. Bei mir (WIndows, WINAPI), muss ich erst das Unicode-Makro definieren, damit die winapi auch wchar_t verwendet.
Bei VC++ ist das gleich irgendwie anders, aber das hab ich noch nie benutzt.
-
Hacker schrieb:
...Kommt drauf an. Bei mir (WIndows, WINAPI), muss ich erst das Unicode-Makro definieren, damit die winapi auch wchar_t verwendet.
Bei VC++ ist das gleich irgendwie anders, aber das hab ich noch nie benutzt.Soviel anders ist es dort auch nicht, es gibt nur eine Einstellung, die man verändern muss, damit das Unicode-Makro aktiv ist.
@adonis:
Am einfachsten kannst du das Makro _T("") verwenden, damit wird bei entsprechender Einstellung das L vor dem String gesetzt oder weggelassen. Dies natürlich nur, wenn die Funktionen es auch unterstützen und nicht explizit wchar_t oder char erwarten!MfG Marco
-
adonis schrieb:
Ich sehe sehr häufig L's vor Zeichenketten:
L"Tutorial09.fx"Welche bedeutung haben die,
Ohne das L bezieht sich der Ausdruck auf ein char-Array. Mit L davor auf ein wchar_t-Array. wchar_t ist im Gegensatz zu char typischerweise "breiter". Die Details sind aber plattformabhängig. Unter Windows ist wchar_t 16bit breit und wird für Zeichen aus der BMP verwendet (möglicherweise auch für UTF-16 kodierte Zeichenketten, bin mir da aber nicht sicher). Unter Linux ist wchar_t 32bit breit und wird meines Wissens nach für UTF-32 verwendet.
adonis schrieb:
und warum bekomme ich Fehler, wenn ich
die in mein Code einbau, Fehlt dazu eine Bibliothek?Wahrscheinlich aus demselben Grund, warum das hier auch nicht funktioniert:
void foo(int*); int main() { double x=0; foo(&x); }kk