首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >_NAME,__NAME,_NAME_,__NAME__等符号的含义

_NAME,__NAME,_NAME_,__NAME__等符号的含义
EN

Stack Overflow用户
提问于 2010-11-24 18:39:22
回答 3查看 2.1K关注 0票数 2

我在无数的C/C++头文件和源文件中看到过这种情况。

除了个人偏好之外,这些不同符号的含义是什么?

  • _NAME
  • __NAME
  • _NAME_
  • __NAME__
  • NAME_t

老实说,我唯一理解的就是_NAME,它是类的私有成员(至少在C#中是这样)。

有人能解释一下他们之间的区别吗?

如果有其他值得注意的符号,请提到它们(即使是在其他类似的语言中)。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-24 18:42:40

___开头的名称通常用于保留标识符,您不应该定义/创建以该约定开头的标识符。(_与上大小写如下)

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

-所有以下划线和大写字母或另一个下划线开头的identifiers始终保留给任何用途。 -所有以下划线开头的identifiers始终保留为identifiers,在普通和标记名称空间中都具有file作用域。

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

-每个包含双下划线(_ _)或以下划线开头以大写字母(2.11)开头的名称都保留给实现,供任何使用。 -以下划线开头的每个名称保留给实现,以便作为全局命名空间中的名称使用。

票数 7
EN

Stack Overflow用户

发布于 2010-11-24 18:44:05

除了NAME_t之外,所有这些名称都保留给“实现”,即标准的C++库代码。,您被禁止在自己的代码中使用此类名称。

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

某些名称和函数签名始终保留在实现中:

  • 每个包含双下划线或以下划线开头的大写字母的名称都保留给实现,供任何使用。
  • 以下划线开头的每个名称都保留给实现,以便作为全局命名空间中的名称使用。

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

票数 5
EN

Stack Overflow用户

发布于 2010-11-24 18:44:34

_t结尾的类型是POSIX中的预留

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4270316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档