see title
and some filler text
to deal with the requirement of minimum body text
i hope you're happy now arbitrary limits
see title
and some filler text
to deal with the requirement of minimum body text
i hope you're happy now arbitrary limits
Short Answer:
No
Long Answer:
Yes, it has to be small enough that it will fit in memory, but otherwise no, not really. If there is a builtin limit (I don't believe there is) it is so huge you'd be really hard-pressed to reach it.
Actually, you got me really curious, so I created the following Python program to generate code:
#! /usr/bin/env python2.6 import sys; cppcode=""" #include #include 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]));
This generates C++ code using the desired length variable name. Using the following:
./gencpp.py 1048576 > main.cpp g++ main.cpp -o main
The above gives me no problems (the variable name is roughly 1MB in length). I tried for a gigabyte, but I'm not being so smart with the string construction, and so I decided to abort when gencpp.py took too long.
Anyway, I very much doubt that gcc pre-allocates 1MB for variable names. It is purely bounded by memory.
I don't know what the limit is (or if there is one), but I think it is good practice that there should be one, in order to catch pathological code, for example that created by a runaway code generator. For what it's worth, the C++ Standard suggests a minimum of 1K for identifier length.
an additional gotcha, some linkers have a limit on the length of the mangled name. this tends to be an issue with template and nested classes more than identifier length but either could trigger a problem afaik