我在读书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_errhandling
,setjm
,va_copy
,和va_end
。
对于名称中的双下划线:除许多字体中的单个下划线外,很难分辨这些并导致混淆。我建议您避免这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句