在C中使用双下划线

rohit15079

我在读书C programming a modern approach我发现一个问题:

为什么标识符不包含多个相邻的下划线(例如,以current__balance为例)不是一个好主意吗?

谁能向我解释为什么?

福兹

以两个下划线或下划线和大写字母开头的标识符由C标准保留,因此不应在您自己的代码中使用,请参见。ISO 9899:2011§7.1.3¶1#1:

7.1.3保留标识符

1每个标头声明或定义在其关联的子句中列出的所有标识符,并可选地声明或定义在其关联的将来的库指示子句中列出的标识符以及始终保留用于任何用途或用作文件范围标识符的标识符。

  • 所有以下划线,大写字母或另一个下划线开头的标识符始终保留供任何使用。
  • 在普通和标记名称空间中,所有以下划线开头的标识符始终保留为文件范围的标识符。
  • 如果包含任何关联的标头,则以下任何一个子节(包括将来的库说明)中的每个宏名均保留为指定用途。除非另有明确说明(请参见7.1.4)。
  • 在以下任何条款(包括将来的库说明)中,errno所有具有外部链接的标识符都将保留为具有外部链接的标识符。184)
  • 在以下任何子条款(包括将来的库说明)中列出的每个具有文件作用域的标识符都保留用作宏名,并在包含任何关联标头的情况下用作同一名称空间中具有文件作用域的标识符。

2没有保留其他标识符。如果程序在保留它的上下文中声明或定义标识符(而不是7.1.4允许),或者将保留标识符定义为宏名,则该行为未定义。

3如果程序#undef在上面列出的第一组中删除了(带有)标识符的任何宏定义,则该行为未定义。


184)与外部连接保留的标识符的列表包括math_errhandlingsetjmva_copy,和va_end

对于名称中的双下划线:除许多字体中的单个下划线外,很难分辨这些并导致混淆。我建议您避免这样做。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在C中使用printf在文本下划线

来自分类Dev

在ExUnit测试中使用下划线(_)

来自分类Dev

如何建议在Python中使用自定义双下划线变量?

来自分类Dev

使用 Windows 重命名将单个下划线替换为双下划线?

来自分类Dev

NodeJS中的双下划线与单下划线

来自分类Dev

用双下划线替换单个下划线

来自分类Dev

如何使用JavaScript删除双下划线

来自分类Dev

如何使用JavaScript删除双下划线

来自分类Dev

如何在CSS中使用带有下划线的自定义下划线?

来自分类Dev

变量前加双下划线

来自分类Dev

Python模块覆盖双下划线

来自分类Dev

禁用续集的双下划线行为

来自分类Dev

在下划线的绑定中使用部分函数

来自分类Dev

在JavaScript中使用Regex删除下划线

来自分类Dev

为什么在下划线中使用typeof(/./)!=='function'

来自分类Dev

在并行分配中使用下划线作为变量

来自分类Dev

在服务中使用下划线进行AngularJS测试

来自分类Dev

是否建议在Typescript中使用下划线?

来自分类Dev

在ASP.NET控件中使用下划线模板

来自分类Dev

在Bash中使用下划线更改空格

来自分类Dev

在主干/下划线模板中使用“ if”,怎么做?

来自分类Dev

限制在输入文本框中使用下划线('_')

来自分类Dev

如何在 Jint 中使用下划线函数

来自分类Dev

在 Scala 映射函数中使用下划线

来自分类Dev

使用下划线排序

来自分类Dev

在目标c中对实例变量使用下划线

来自分类Dev

为什么在 c 中为结构使用下划线?

来自分类Dev

以单下划线或双下划线开头的函数和变量

来自分类Dev

C ++属性名称是否应该用双下划线包装?