RE:FW: [ROOT] ROOT variable scope rules

From: Masaharu Goto (MXJ02154@nifty.ne.jp)
Date: Sat Oct 20 2001 - 16:24:14 MEST


Hello,

Both of the problem is Cint's limitation.  The first one is not clearly
described in documentation, but second one is.   
Please read doc/limitati.txt

There are messages about this limitation in roottalk, but may be those
are hard to identify for you because each people label this problem 
differently.

Thank you
Masaharu Goto


>Hi,
>
>I do not have a copy of the ANSI C++ rules in front of me, but I
>believe that there are some discrepancies between ROOT and standard
>C++ variable scope rules.
>
>For example, I expect a variable declared in the body of an if
>statement to be defined throughout the body of that statement like:
>
>         if (int foo = bar(arg))
>           {
>              cout << "foo is " << foo << endl;
>           }
>         else
>            {
>              cout << " foo is 0 " << endl;
>            }
>
>This does not work in ROOT. The error returned is:
>
>Warning: Automatic variable Int_tfoo allocated in global scope FILE:test.C 
LINE:12
>
>but works exactly as expected when compiled using a c++
>compiler
>
>Additionally variables declared in a for loop exist outside of the
>loop. Try running the following in ROOT and compile a version using
>your favorite compiler and you will see a big difference between the
>two outputs:
>
>    int i = 66;
>
>    for (int i = 0; i < 10; i++)
>      {
>        int k;
>  
>        k++;
>  
>        cout << "in loop k: " << k << endl;
>  
>      }
>  
>    cout << "outside loop i: " << i << endl;
>    cout << "outside loop k: " << k << endl;
>
>In fact this should not even compile using a compiler since k is not
>declared outside of the loop. Additionally this program run through
>ROOT will say that i is 10, but it should be 66 shouldn't it?
>
>I have also run into problems with variables not being removed between
>functions calls to the same function in loops.
>
>Are these variable scoping differences intended, being worked on, or
>am I just wrong about this? I haven't seen anyone else remark about
>this in the roottalk digest.
>
>Thanks for any comments,
>Bill
>
>



This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:03 MET