3 ='c'在C和C ++中有效吗?
这个问题在这里已经有了答案:
所有变量名称必须以字母或下划线开头。 所以是的,它是有效的,除非你把它放在文件范围内。 (尽管如此,请谨慎使用双下划线,它仅供编译器内部使用)
然而,我不会推荐具有这种名称的变量,因为它可能会让读者感到困惑。
从C ++ 2003标准:
17.4.3.1.2全局名称[lib.global.names]
某些名称和功能签名集始终保留给实施:
这些名字也保留在namespace :: std(17.4.3.1)中。
它在全球范围以外的任何范围内都有效1。
C ++ 17 - n4659 / [lex.name]
另外,一些标识符被保留供C ++实现使用,不得以其他方式使用; 不需要诊断。
标准库实际上在名称空间范围内有一个例子,它继承自boost
: std::bind
的占位符。
和C有类似的措辞:
C11 - n1570 / 7.1.3保留标识符
每个头部声明或定义在其相关子条款中列出的所有标识符,并且可选地声明或定义其关联的未来库方向子条款中列出的标识符以及总是保留用于任何用途或用作文件范围标识符的标识符。
尽管选择范围更加有限。
1 - 不是一个规范术语,只是两个标准使用的术语的混杂。
链接地址: http://www.djcxy.com/p/40317.html