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

时间:2012-04-13 13:06:46

标签: c++ c variables names kr-c

以下是本书的直接引用(K& R,第2版,第35页):

  

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

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

我的问题是为什么这些限制特别 31 63 ?为什么这个号码具体?为什么不 19,24 或任何其他数字?如果这是一个实施问题,是否可以从 31 63 中获益?

1 个答案:

答案 0 :(得分:8)

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