C ++中标识符名称的长度是否有限制?

时间:2011-09-12 19:10:27

标签: c++ gcc language-design

C ++中的变量名称是否有长度限制?它是什么?这与机器的“64/32位”有什么关系吗?

编辑:具体来说,GCC的限制是什么?

2 个答案:

答案 0 :(得分:23)

C ++标准的lex.name部分说

  

标识符是一个任意长的字母和数字序列。

但是,共享大量初始字符的变量名称可能不会被视为单独的变量,所使用的初始字符的确切数量是特定于实现的。附件B说:

  

由于计算机是有限的,因此C ++实现不可避免地受限于它们可以成功处理的程序的大小。每个实施都应记录已知的限制。本文档可引用存在的固定限制,说明如何根据可用资源计算变量限制,或者说固定限制不存在或未知。

     

限制可能会限制包含下述数量或其他数量的数量。建议将每个数量后面的括号内的数字作为该数量的最小值。但是,这些数量仅是指导原则,不能确定合规性。


对于gcc,限制是:

预处理器:no limit

C语言:no limit

C ++:可能与C相同,没有记录单独的限制。 "Some choices are documented in the corresponding document for the C language"

链接器(控制跨编译单元链接的外部名称):Platform-specific, often unlimited

答案 1 :(得分:7)

在MS Visual Studio 2003-2012中,标识符的最大长度为2047个字符(每MSDN个)。