C# 如_NAME、_NAME、_NAME、_NAME、_NAME等符号的含义__

C# 如_NAME、_NAME、_NAME、_NAME、_NAME等符号的含义__,c#,c++,c,C#,C++,C,我在无数的C/C++头文件和源文件中看到了这一点。 除了个人偏好之外,这些不同符号的含义是什么 \u名称 \u名称 \u名称 \uuuuuuuuuuu名称 NAME\u t 老实说,我唯一能理解的是\u NAME,它是类的私有成员(至少在C语言中是) 有人能解释一下他们之间的区别吗? 如果有任何其他值得注意的符号,请提及(即使是其他类似语言) 谢谢 以\u或\u开头的名称通常用于保留标识符,您不应定义/创建以该约定开头的标识符。(uu后面有大写字母) 来自C99标准7.1.3-“保留标识符”

我在无数的C/C++头文件和源文件中看到了这一点。
除了个人偏好之外,这些不同符号的含义是什么

  • \u名称
  • \u名称
  • \u名称
  • \uuuuuuuuuuu名称
  • NAME\u t
老实说,我唯一能理解的是
\u NAME
,它是类的私有成员(至少在C语言中是)

有人能解释一下他们之间的区别吗?
如果有任何其他值得注意的符号,请提及(即使是其他类似语言)


谢谢

\u
\u
开头的名称通常用于保留标识符,您不应定义/创建以该约定开头的标识符。(uu后面有大写字母)

来自C99标准7.1.3-“保留标识符”

-以下划线和大写字母或其他字母开头的所有标识符 下划线始终保留供任何使用

-所有以下划线开头的标识符始终保留用作标识符 在普通和标记名称空间中都具有文件范围

来自C++03标准(对C++98的修订),第17.4.3.1.2节-“全局名称”

-每个名称都包含一个双下划线()或以下划线开头,后跟一个大写字母- 案例字母(2.11)保留给实施,以供任何使用

-每个以下划线开头的名称都保留给实现,以用作 全局命名空间


除了<代码> NAMEXT ,所有这些名称都保留为“实现”,即标准C++库代码。strong>禁止您在自己的代码中使用此类名称

第17.6.3.3.2节“全球名称”§1规定:

某些名称和函数签名集始终保留给实现:

  • 包含双下划线或以下划线开头,后跟大写字母的每个名称都保留给实现以供任何使用

  • 每个以下划线开头的名称都保留给实现,以用作全局命名空间中的名称


(请注意,这些规则禁止像我经常看到的
\uu MY_FILE\u H
这样的头保护。)

\u t
结尾的类型由POSIX提供。

只是为了更清楚地说明:在类级别,允许使用以下划线开头的名称(因为它们不在全局命名空间中),和通常用于私有字段。@Matteo:只要第二个字符不是大写字母,这是正确的。但是
\u[A-Z\u]+
是完全保留的。@R:是的,你是对的,另一个答案在这方面更完整。