【问题标题】:limit on the length of an identifier in CC中标识符长度的限制
【发布时间】:2017-01-30 11:23:23
【问题描述】:

据说两个不同的标识符的前31个字符必须不同,而不管它们的总长度。为什么C中的标识符长度有限制(31个字符)?

【问题讨论】:

  • 该标准仅将lower bounds 用于实现遵循,可能是为了确保当前架构中的最低公分母。但它也 encourages 实现尽可能地远远超过它们。
  • 你最好阅读官方文档进行研究。
  • 在 C99 之前,要求只有 6 个字符。当使用不超过最低要求的链接器时,这很有趣

标签: c uniqueidentifier identifier


【解决方案1】:

这个限制是为了使内部簿记更简单,以便编译器可以安全地为变量名分配不超过 32 个字符(31 + 空终止符)(就像在不同的纸质表格中对姓氏长度有限制一样)。确切的限制是任意的,对于内存来说足够小,对于程序员来说足够大。

另外,因为在某些系统上,链接是与 C 编译器系统分开的一个步骤,并且可能会链接不是用 C 编写的目标文件。这些可能对标识符长度有限制。

更新:问题是可以制作一个由多个部分组成的程序,这些部分用不同的语言编写(例如,一个函数可能已经用 Fortran 编写并从主 C 代码调用)。其他语言可能对可变长度施加不同的限制(一个人为的例子:如果标识 abcdefabcdef1 在 Fortran 代码中被认为是指同一个函数,那么在 C 代码中应该是这样)。以姓氏为例进行说明:地方当局可能能够处理长度较大或使用当地语言的姓名,但联邦当局的要求可能会更严格。

【讨论】:

  • 谢谢您理解答案。请您详细说明链接力如何限制标识符的长度。
  • 那是编辑帖子的马尔科姆麦克莱恩的补充。我已经更新了答案。
猜你喜欢
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 2010-09-16
  • 2020-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多