我通常是一个学习用C语言编程的Java程序员。现在在Kernighan和Ritchie的书的第2章中,这就是所写的。
至少内部名称的前31个字符是重要的。对于函数名和外部变量,该数字可能小于31,因为外部名称可能由语言无法控制的汇编程序和加载程序使用。对于外部名称,该标准保证唯一性仅限6个字符和单个案例。
然后他们写了
我们倾向于为本地变量使用短名称,尤其是外部 <循环索引和更长名称变量
与它应该做的完全相反。虽然我知道我们不想要索引的长描述性变量名称,但上述两句话是否相互矛盾?
答案 0 :(得分:1)
K&amp; R书籍从未更新到最近的标准,例如C99和当前的C11。外部标识符的限制最多提升到31个字符。如C11§5.2.4.1/ p1:
- 外部标识符中的31个重要的初始字符(每个 通用字符名称,指定短标识符0000FFFF或 less被认为是6个字符,每个通用字符名称 指定00010000或更高的短标识符被认为是10 字符和每个扩展源字符被认为是相同的 字符数作为相应的通用字符名称,如果 任何)19)
除此之外,即使C89标准建议尽可能摆脱任意限制。 5.2.4.1中的评论说:
实施应避免在任何时候强加固定的翻译限制 可能的。
虽然评论仅提供信息,但显然是实施者允许更长标识符的暗示。