2016-07-22 15 views
-3

Ich habe versucht, eine C++ Datei zu kompilieren, aber ich habe den folgenden Fehler:Compilation Problem mit Unicode-Zeichen in C++

Fehler C3850: '\ uD800': ein universelles Zeichen-name gibt einen ungültigen

Zeichen

Fehler C3850: '\ uDFFF': ein universeller Zeichen-Name spezifiziert ein ungültiges Zeichen

Die Leitung mit Fehlern sind:

ValidateEmailAddr (L "\ uD800 \ @ uDFFF \ uD800 \ uDFFF.com", false);

Wie behebt man dieses Problem?

+0

Ich schlage vor, Sie, den Fehler google bevor Sie Fragen stellen (Kopieren und fügen Sie die erste Zeile in das Google-Suchfeld ein). Glückliche Kodierung. – mok

Antwort

1

Die von Ihnen angegebenen Zeichen sind ein Ersatzpaar - ein Paar 16-Bit-Mengen, die zusammen einen Unicode-Codepunkt definieren (mit dem Wert 0x103FF). Der Compiler ist korrekt: Dies ist kein gültiger Codepunkt, Sie sollten ihn also nicht verwenden (siehe http://www.fileformat.info/info/unicode/char/103ff/index.htm).

Wenn Sie trotzdem diesen Wert wünschen, müssen Sie den Compiler in irgendeiner Weise tricksen. Eine Möglichkeit ist, den Wert dynamisch zu konstruieren:

wchar_t bla [20]; 
bla [0] = 0xD800; 
bla [1] = 0xDFFF; 
...etc. 

Dies ist nicht so bequem, aber wirklich, der Compiler versucht, nur zu helfen, einen Fehler zu vermeiden hier ...