2010-04-03 17 views
5

C++ programmda linux'da derleyeceğim, C++ programında unicode karakterleri (\ apha gibi)/varaible isimlerinde kullanmak istiyorum. Herkes iyi bir rehber/kurallar listesi her şeyi bittiğinden emin olmak için// bağlantı hataları kaçınarak iyi tamamlama///...llvm-clang; unicode charactrs işlevini içeren değişkenler/değişken adlar

Teşekkürler!

+0

Sadece meraktan, APL'den mi geçiyorsunuz? –

+0

'clang ++' 3.4 bunu destekler. 3.3'ten beri (http://llvm.org/releases/3.3/tools/clang/docs/ReleaseNotes.html#major-new-features) – alfC

cevap

5

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.