RE:Error in Root/Cint.

From: Masaharu Goto (MXJ02154@nifty.ne.jp)
Date: Tue Nov 17 1998 - 12:12:00 MET


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



This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:34:39 MET