2010-04-03 7 views
5

Me interesa utilizar caracteres unicode (como \ apha) en nombres de función/varaible en mi programa C++ que compilaré con clang ++ en linux. ¿Alguien sabe de una buena guía/lista de reglas para asegurarse de que todo termina compilando bien/evitar errores de vinculación/...llvm-clang; nombres de función/variable que contienen caracteres unicode

Gracias!

+0

Solo por curiosidad, ¿está migrando de APL? –

+0

'clang ++' 3.4 lo admite. Desde 3.3 (http://llvm.org/releases/3.3/tools/clang/docs/ReleaseNotes.html#major-new-features) – alfC

Respuesta

5

Clang 3.0 no admite caracteres Unicode en los identificadores. El último tronco tiene soporte parcial para esto, y creo que alguien está trabajando actualmente para implementarlo completamente.

En cuanto a cuando Clang los admite, eche un vistazo a C++ 11 (n3242) 2.11 [lex.name].

Todos los caracteres de un identificador debe coincidir [a-zA-Z_0-9] o el conjunto de caracteres en E.1:

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 

El primer carácter debe coincidir [a-zA-Z_] o E.1 excluyendo E.2:

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

En cuanto a la vinculación, tenemos que echar un vistazo a la ABI de C++ que está utilizando. En este caso (Clang y Linux) sería el Itanium C++ ABI.

Y ... después de buscar por siempre, las únicas cosas que pude encontrar fueron en JNI, y gcc internals. Cuando Clang lo implemente, usará el mismo cambio que gcc. De cualquier manera, siempre que todo el código que compile usando identificadores Unicode se compile con el mismo compilador, se vinculará correctamente.

Cuestiones relacionadas