代码之家  ›  专栏  ›  技术社区  ›  BeemerGuy

表示法的含义,如名称、名称、名称__

c c++ c#
  •  1
  • BeemerGuy  · 技术社区  · 14 年前

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

    • _NAME
    • __NAME
    • _NAME_
    • __NAME__
    • NAME_t

    老实说,我唯一能理解的是 _姓名 ,它是类的私有成员(至少在C中是)。

    有人能解释他们之间的区别吗?
    如果还有其他明显的符号,请提及(即使是其他类似语言)。

    谢谢!

    3 回复  |  直到 14 年前
        1
  •  5
  •   wkl    14 年前

    以开头的名字 _ __ 通常用于保留标识符,不应定义/创建以该约定开头的标识符。(以下为大写)

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

    以下划线和大写字母或其他字母开头的所有标识符 下划线总是保留给任何人使用。

    所有以下划线开头的标识符始终保留用作标识符 在普通和标记名空间中都有le scope。

    从C++ 03标准(修改到C++ 98),第174.3.1.2节-“全局名称”

    每个包含双下划线(u)或以下划线后跟大写字母开头的名称- 案例函(2.11)保留给执行机构使用。

    以下划线开头的每个名称都保留给实现,以在 全局名字空间

        2
  •  3
  •   fredoverflow    14 年前

    除了 NAME_t 所有这些名称都保留为“实现”,也就是标准的C++库代码。 禁止在自己的代码中使用此类名称 .

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

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

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

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

    (注意这些规则禁止像 __MY_FILE_H 这是我经常看到的。)

        3
  •  2
  •   Matthew Flaschen    14 年前

    以结尾的类型 _t reserved 波塞克斯。