在C++代码中使用"变音符号"

nab*_*lke 11 c++ compiler-construction

可能重复:
unicode中的C++源代码

我刚在项目中发现了这行代码:

string überwachung;
Run Code Online (Sandbox Code Playgroud)

我很惊讶,因为实际上我认为你不允许在C++代码中使用像'äöü'这样的变音符号而不是字符串等等,这会导致编译错误.但这与Visual Studio 2008编译得很好.

  • 这是一个特殊的微软功能,还是其他编译器也允许使用变音符号?
  • 是否有任何潜在的问题(可移植性,系统语言设置..)?
  • 我清楚地记得这是不允许的.什么时候改变了?

亲切的问候任何澄清

PS:工具cppcheck甚至会将此用法标记为错误,即使它已编译

Ale*_*ler 6

海湾合作委员会抱怨: 键盘

:错误:在程序中迷路'\'303'

C++语言标准本身将基本源字符集限制为91个可打印字符加上制表符,换页符和换行符,这些都在ASCII中.但是,有一个很好的脚注:

基本源字符集成员的字形旨在识别ISO/IEC 10646子集中对应于ASCII字符集的字符.但是,由于源文件字符到源字符集(在转换阶段1中描述)映射被指定为实现定义,因此需要实现来记录源文件中基本源字符的表示方式.

..翻译阶段1是(强调我的)

如果需要,物理源文件字符以实现定义的方式映射到基本源字符集(引入行尾指示符的换行符).接受的物理源文件字符集是实现定义的.

通常,您不应在代码中使用变音符号或其他特殊字符.如果可行,但如果可行,则它是特定于编译器的功能.

  • +1.但是,您必须承认,ASCII也是特定于编译器的功能. (4认同)