最大标识符长度

在哪里可以找到C中的最大标识符长度?

哪个头文件是指定的限制?

没有包含标识符长度限制的头文件; 即使有,它怎么能帮助你? 无论如何,您无法在编译时根据头文件中的值更改标识符长度。

C标准 ,第5.2.4.1节说:

  • 内部标识符或宏名称中的63个重要初始字符(每个通用字符名称或扩展源字符被视为单个字符)
  • 外部标识符中有31个重要的初始字符(指定短标识符0000FFFF或更少的每个通用字符名称被认为是6个字符,指定短标识符00010000或更多的每个通用字符名称被认为是10个字符,并且每个扩展源字符被认为是与相应的通用字符名称相同的字符数(如果有)

它还包含一个脚注:

实施应尽可能避免强加固定的翻译限制。

因此,您应该检查您的文档,看看您的编译器是否支持标识符中更多的重要字符。

没有标题告诉你。 您必须根据您可能移植的平台做出明智的决定。 Carl Norum指出了C99标准所说的内容。

曾几何时,对于外部变量,您只能依赖6个唯一字符(单例) – 因为这是一些大型机环境提供的。 (这是C89标准所说的 – 但它注意到这种限制是痛苦的。)

现在,部分原因是由于C ++中的类型安全链接,您可以合理地依赖外部符号的更长名称。 如果你开始漂移超过31个字符,你可能会遇到问题 – 但你也遇到了可读性问题。

简而言之,没有头文件可以告诉您,这是ANSI / ISO C标准规范的一部分,它定义了C语言本身的语法和环境机制的布局。 在C89之前的标准中,由于大型机和* nix系统等系统上的内存占用空间很小,因此最大标识符长度为6。

今天,最新的标准是C99标准,它规定标识符的最大长度为32,原因很简单和逻辑…编译器通过解析输入流来工作,该输入流将作为命令行参数传递, makefile或解决方案(对于Microsoft Visual Studio环境),解析器是严格的并且是固定的,因此对标识符的长度施加了限制,以便解析器可以向前看并查看是否还有更多字符。 这是因为它的原因。

另一个原因是大多数C ++编译器在标识符上使用名称修改,正如Jonathan Leffler指出的那样,可能会混淆编译器以及代码的链接。