Clang 3.0, tanımlayıcılardaki Unicode karakterlerini desteklemez. En son bagajın bunun için kısmen desteği var ve birisinin şu anda bunu tam olarak uygulamak için çalıştığına inanıyorum.
Clang bunları desteklediğinde, C++ 11 (n3242) 2.11 [lex.name] 'ye bir göz atın.
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
ilk karakteri [a-zA-Z_]
maç veya E.1 hariç Ö.2 gerekir:
0300-036F, 1DC0-1DFF, 20D0-20FF, FE20-FE2F
bir tanımlayıcı içinde
tüm karakterler [a-zA-Z_0-9]
veya E.1'de karakter kümesini aynı olmalıdır
Bağlantı için, kullandığınız C++ ABI'ye bir göz atmamız gerekiyor. Bu durumda (Clang ve Linux) Itanium C++ ABI olacaktır.
Ve ... sonsuza kadar araştırdıktan sonra, bulabildiğim tek şey JNI ve gcc içersindeydi. Clang bunu uygularken, gcc ile aynı mandallamayı kullanır. Her iki şekilde de, unicode tanımlayıcılarını kullanarak derlediğiniz tüm kodlar aynı derleyici ile derlendiğinden, doğru şekilde bağlanır.
Sadece meraktan, APL'den mi geçiyorsunuz? –
'clang ++' 3.4 bunu destekler. 3.3'ten beri (http://llvm.org/releases/3.3/tools/clang/docs/ReleaseNotes.html#major-new-features) – alfC