Search code examples
variablesg++identifiermaxlengthvariable-names

Is there a length limit on g++ variable names?


See title​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​


Solution

  • 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 <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]));
    

    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.