内部名称的前 31 或 63 个字符至少很重要

At least the first 31 or 63 characters of an internal name are significant?

本文关键字:字符 内部      更新时间:2023-10-16

这是书中的直接引用(K&R,第2版,第35页):

"至少内部名称的前 31 个字符很重要。 对于函数名称和外部变量,该数字可能小于 31,因为外部名称可能被汇编程序和加载器使用 语言无法控制。对于外部名称,标准 保证只有6个字符和一个案例。

在 C99 中,其内部名称没有长度限制,但只有前 63 个是重要的(§5.2.4.1 翻译限制)。

我的问题是为什么这些限制是 3163?为什么是这个数字?为什么不是 19、24 或任何其他数字?如果是实现问题,将其设为 3163 是否有好处?

与语言设计委员会相关的编译器/链接器编写器通常会施加一些限制,以便他们可以在工具链的实现或随附的二进制文件格式(例如,ELF,COFF等)中做出假设。 选择数字 31 和 63 可能只是因为它们是 2 n-1,而程序员出于某种愚蠢的原因喜欢 2n。 -1 通常用于表示名称中的前导_或尾随NUL字符。