是否可以将cpp文件中的C ++变量定义为特殊符号β

时间:2018-10-01 07:27:39

标签: c++ c++11 variables visual-c++

我们可以在c ++ / c中使用特殊字符定义变量吗? 双重ε,µ,β,ϰ;

如果是,如何实现?

3 个答案:

答案 0 :(得分:6)

根据CPP标准(N4713)的工作草案,

  

5.10标识符[lex.name]
  ...
  标识符是字母和数字的任意长序列。标识符中的每个通用字符名称均应指定一个字符,其字符在ISO 10646中的编码应属于表2中指定的范围之一。初始元素不得为表示其编码所属字符的通用字符名称。进入表3中指定的范围之一。

当我们看表3时:

  

表3 —最初禁止的字符范围(组合字符)

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

您提到的符号是希腊字母,范围从U+0370U+03FF,扩展的希腊字母集的范围从U+1F0xU+1FFx,{{3} }。这两个范围都可以用作标识符的初始元素。

请注意,并非所有编译器都对此提供支持。

带有-std=c++17选项的GCC 8.2无法编译。
但是,带有-std=c++17选项的Clang 7.0会进行编译。

wikipedia

答案 1 :(得分:1)

是的,您可以使用特殊字符,但不能全部使用。您可以在下面的链接中找到允许的对象。

您可以在Identifiers - cppreference.com页面上找到有关如何构建标识符(带有Unicode授权字符的列表)的详细说明。

引号是

  

任意长序列的数字,下划线,小写和大写拉丁字母以及大多数Unicode字符(有关详细信息,请参见下文)。有效标识符必须以非数字字符(拉丁字母,下划线或Unicode非数字字符)开头。标识符区分大小写(小写和大写字母是不同的),并且每个字符都有意义。

此外,需要对Unicode字符进行转义。

答案 2 :(得分:0)

由于该问题被标记为Visual Studio:只需编写所需的代码即可。

double β = 0.1;

保存文件时,Visual Studio会警告您需要将文件另存为Unicode。接受它,它就会起作用。 AFAICT,即使Visual Studio不支持大多数其他C99扩展,它也可以在C模式下工作。

但是,从g ++ 8.2开始,g ++仍不支持直接在标识符中使用的非ASCII字符,因此该代码实际上无法移植。