RE:Error in Root/Cint.

Masaharu Goto (MXJ02154@nifty.ne.jp)
Tue, 17 Nov 1998 20:12:00 +0900


Bjorn,

Thank you for reporting problems. Here is my comment.

>#define MAX(a, b) ((a) > (b) ? (a) : (b))
>
>void rooterror1(void){
>
> int i,j,k,l,m;
>
> i = 1;
> j = 2;
> k = 3;
> l = 4;
>
> m = MAX(l,MAX(k,MAX(j,i)));
> .

his is cint limitation. Cint limitations in preprocessor macro handling
when used without -p option. I recommend avoiding macro as much as possible.
Above case can be replaces by template.

//#define MAX(a, b) ((a) > (b) ? (a) : (b))
template<class T> T MAX(T a, T b) { return ((a) > (b) ? (a) : (b)); }

>#define number 10/2 /* feet per second */

I think this is a bug. I need fix this. Again, I recommend following
definition instead. But this one seems so commmon.

const int number = 10/2;

>void rooterror3(void){
> static Double_t **j,i=3.0;
>
> printf("i=%f\n",i);
>
> i=4.0;
> printf("i=%f\n",i);
>}

I can not reproduce the problem. I recently fixed a but of local 'static'
variable initialization. I tried above source with the latest version and
it works fine. Maybe the fix did good for this problem already.

Masaharu Goto