LLVM-铛;包含unicode字符的函数/变量名

时间:2010-04-03 22:19:55

标签: unicode clang

我有兴趣在我的c ++程序中使用函数/变量名中的unicode字符(比如\ apha),我将在linux上用clang ++编译。有没有人知道一个好的指南/规则列表,以确保一切最终编译正常/避免链接错误/ ...

谢谢!

1 个答案:

答案 0 :(得分:5)

Clang 3.0不支持标识符中的Unicode字符。最新的主干对此有部分支持,我相信有人正在努力实现这一目标。

至于Clang何时支持它们,请看一下C ++ 11(n3242)2.11 [lex.name]。

标识符中的所有字符必须与{1}}或E.1中的字符集匹配:

[a-zA-Z_0-9]

第一个字符必须与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 或E.1匹配,但不包括E.2:

[a-zA-Z_]

至于链接,我们需要看看你正在使用的C ++ ABI。在这种情况下(Clang和Linux),它将是Itanium C ++ ABI。

并且......在永远搜索之后,我能找到的唯一东西就是JNI和gcc内部。当Clang执行此操作时,它将使用与gcc相同的修改。无论哪种方式,只要使用unicode标识符编译的所有代码都使用相同的编译器进行编译,它就会正确链接。