C# 如_NAME、_NAME、_NAME、_NAME、_NAME等符号的含义__
我在无数的C/C++头文件和源文件中看到了这一点。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-“保留标识符”
除了个人偏好之外,这些不同符号的含义是什么
\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:是的,你是对的,另一个答案在这方面更完整。