C ++中的变量名称是否有长度限制?它是什么?这与机器的“64/32位”有什么关系吗?
编辑:具体来说,GCC的限制是什么?
答案 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个)。