Краткий ответ: Нет
Длинный ответ: Да, он должен быть достаточно маленьким, чтобы поместиться в памяти, но в противном случае нет, не совсем.Если есть встроенный лимит (я не верю, что он есть), он настолько велик, что вам будет очень трудно его достичь.
На самом деле, вы действительно заинтересовали меня, поэтому я создал следующееПрограмма 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]));
Это генерирует код C ++, используя имя переменной требуемой длины.Используя следующее:
./gencpp.py 1048576 > main.cpp
g++ main.cpp -o main
Вышесказанное не доставляет мне проблем (имя переменной составляет примерно 1 МБ в длину).Я пытался получить гигабайт, но я не настолько умён с конструкцией строки, и поэтому я решил прервать, когда gencpp.py занял слишком много времени.
В любом случае, я очень сомневаюсь, что gcc предварительно выделяет1 МБ для имен переменных.Это чисто ограничено памятью.