2010-04-03 6 views
5

Ich möchte Unicode-Zeichen (wie \ apha) in Funktions-/Variablennamen in meinem C++ - Programm verwenden, das ich mit clang ++ unter Linux kompilieren werde. Kennt jemand eine gute Anleitung/eine Liste der Regeln, um zu gehen, um sicherzustellen, dass alles endet, fein machend/Verbindungsfehler zu vermeiden/...llvm-clang; Funktions-/Variablennamen, die Unicode-Zeichen enthalten

Thanks!

+0

Nur aus Neugier, migrieren Sie von APL? –

+0

'clang ++' 3.4 unterstützt dies. Seit 3.3 (http://llvm.org/releases/3.3/tools/clang/docs/ReleaseNotes.html#major-new-features) – alfC

Antwort

5

Clang 3.0 unterstützt keine Unicode-Zeichen in Bezeichnern. Der neueste Trunk unterstützt dies teilweise, und ich glaube, dass jemand daran arbeitet, dies vollständig zu implementieren.

Wenn Clang sie unterstützt, sehen Sie sich C++ 11 (n3242) 2.11 [lex.name] an.

Alle Zeichen in einem Identifikator muss [a-zA-Z_0-9] oder den Satz von Zeichen in E.1 entsprechen:

0300-036F, 1DC0-1DFF, 20D0-20FF, FE20-FE2F 
:

00A8, 00AA, 00AD, 00AF, 00B2-00B5, 00B7-00BA, 00BC-00BE, 00C0-00D6, 00D8-00F6, 00F8-00FF 
0100-167F, 1681-180D, 180F-1FFF 
200B-200D, 202A-202E, 203F-2040, 2054, 2060-206F 
2070-218F, 2460-24FF, 2776-2793, 2C00-2DFF, 2E80-2FFF 
3004-3007, 3021-302F, 3031-303F 
3040-D7FF 
F900-FD3D, FD40-FDCF, FDF0-FE44, FE47-FFFD 
10000-1FFFD, 20000-2FFFD, 30000-3FFFD, 40000-4FFFD, 50000-5FFFD, 
    60000-6FFFD, 70000-7FFFD, 80000-8FFFD, 90000-9FFFD, A0000-AFFFD, 
    B0000-BFFFD, C0000-CFFFD, D0000-DFFFD, E0000-EFFF 

Das erste Zeichen [a-zA-Z_] oder E.1 ohne E.2 übereinstimmen

Zum Verknüpfen müssen wir uns die C++ - ABI ansehen, die Sie verwenden. In diesem Fall (Clang und Linux) wäre es das Itanium C++ ABI.

Und ... nach der Suche für immer, die einzigen Dinge, die ich finden konnte waren auf JNI und GCC Internals. Wenn Clang dies implementiert, wird dasselbe Mangling wie gcc verwendet. In beiden Fällen wird der gesamte Code, den Sie mithilfe von Unicode-IDs kompilieren, mit dem gleichen Compiler kompiliert.

Verwandte Themen