g ++变量名称有长度限制吗?

ano*_*non 17 variables g++ identifier variable-names maxlength

看标题

和一些填充文字

处理最低正文的要求

我希望你现在幸福任意的限制

Mic*_*yan 20

简答:

长答案:
是的,它必须足够小才能适合记忆,但不是,不是真的.如果有一个内置限制(我不相信有)它是如此巨大,你真的很难达到它.

实际上,你让我很好奇,所以我创建了以下Python程序来生成代码:

#! /usr/bin/env python2.6
import sys;
cppcode="""
#include <iostream>
#include <cstdlib>

int main(int argc, char* argv[])
{
     int %s = 0;
     return 0;
}
"""

def longvarname(n):
    str="x";
    for i in xrange(n):
        str = str+"0";
    return str;

def printcpp(n):
    print cppcode % longvarname(n);

if __name__=="__main__":
    if len(sys.argv)==2:
        printcpp(int(sys.argv[1]));
Run Code Online (Sandbox Code Playgroud)

这将使用所需的长度变量名生成C++代码.使用以下内容:

./gencpp.py 1048576 > main.cpp
g++ main.cpp -o main
Run Code Online (Sandbox Code Playgroud)

上面没有给我带来任何问题(变量名长度约为1MB).我尝试了一个千兆字节,但我不是那么聪明的字符串结构,所以当gencpp.py花了太长时间我决定中止.

无论如何,我非常怀疑gcc预先为变量名分配1MB.它纯粹受到记忆的束缚.