为什么标准C++库中的一些标识符很短
Why some identifiers in the standard C++ library are short?
为什么有些C++名称很短,有时很难理解,比如strcmp
,cout
、cin
等。但在Java等其他语言中,名称并不短。它能节省时间、内存还是什么?
这主要适用于标准C++库中从C"继承"的部分。在C89之前的C语言标准中,外部标识符的重要部分被限制为6个字符;链接器被允许忽略剩余的字符。这就是标准C库将标识符长度限制为6个字符的原因。C++"批发"地引入了这个库,还有一些神秘的标识符。
有些C++标准库是从旧的C标准库派生而来的。旧的C标准库又是从旧的K&R库,通过其他语言中内置的函数(如输入/输出)提供了一些基本功能。
《ANSI C程序设计语言的基本原理》一书的本节介绍了C标识符的命名约定。
C编程语言被编译,编译器的机器代码输出被链接到实际应用程序中。进行链接的软件通常是操作系统供应商提供的标准工具的一部分。对各种供应商提供的可用链接器应用程序的调查发现,最基本的链接器为链接器可以处理的外部标识符提供了六个字符。一些链接器允许更多的字符。然而,通过指定6个字符的限制,C编译器的可用目标计算机列表要大得多。
通过保持链接器的限制,它允许C程序员编写可以与用其他语言编写的软件一起使用的C程序和函数库,也允许C程序员使用用其他语言写的库。
C++继承了C,而C是由习惯于使用汇编程序的程序员很久以前构建的。
但我认为它深入到了程序员的数学背景中。早期有人试图通过使用英语术语来使语言更容易理解,COBOL和SQL可能是唯一的幸存者。但是,由于编程语言中的单词有着非常精确的含义,使用"SELECT"而不是冒号只会有一小部分帮助,因此您仍然需要了解SQL的所有细节才能编写查询的其余部分。
对于经验丰富的程序员来说,短标识符使代码更容易理解,您可以一眼就能看到和解析更多的结构。如果你必须阅读C17-C18的科学论文,他们用一页散文来描述我们在一个方程中所写的内容,你会理解的。
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 使用CMake检测支持的C++标准
- 如何理解C++标准N3337中的expr.const.cast子句8
- "throw expression code" 1e7 >返回 d 是什么?投掷标准::overflow_error( "too big" ) : d;意味 着?
- #ifdef和未声明的标识符
- 编译标准库类型
- 标准是否使用多余的大括号(例如 T{{{10}}})定义列表初始化?
- f2、f3、f4标识符未找到
- 编译器如何在使用SFINAE的函数和标准函数之间确定两者是否可行
- 铸造标准::有没有回到原来的类型
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- 标准库类型的赋值运算符的引用限定符
- 设置 Visual Studio for MPI: 找不到标识符错误
- 标准是否严格定义了该程序应该如何编译?
- 标准库标识符与用户标识符冲突
- 使用标准类型的动态类型信息实例化标识符
- 什么是ISO14882和ECMA335标准的有效标识符
- 在C++中使用标准库函数名称作为标识符是否有效
- 为什么标准C++库中的一些标识符很短