至少有一个内部名称的前31首或63个字符是显著? [关闭](At least the first

2019-06-23 15:08发布

下面是来自预订直接引(K&R,第2版,第35页。):

“至少一个内部名称的前31个字符是显著。对于函数名和外部变量的数量可以小于31,因为外部名称可以由汇编器和加载器在其上语言没有控制被使用。对于外部名称,标准只保证为6个字符和一个单一的情况下“。

而在C99上有其内部名称没有长度的限制,但只有前63都保证显著(§5.2.4.1翻译限制)。

我的问题是,为什么这些限制专3163? 为什么这个数字特别? 为什么不是19,24或任何其他的号码吗? 如果这是一个执行问题,有没有从使它3163有什么好处?

Answer 1:

用语言设计委员会有关的编译器/连接作家通常施加一些限制,以便他们可以在工具链的实施或附图二进制文件格式(例如,做出假设ELF , COFF ,等等)。 数字31和63很可能选择,只是因为他们是2×N-1和程序员喜欢2 N一些愚蠢的理由。 -1通常是占无论是领先_或尾随NUL的名称字符。



文章来源: At least the first 31 or 63 characters of an internal name are significant? [closed]