Hi Gerri, OK, I understand now. No problem. Thanks for correcting it. Andy On Sun, 29 Aug 2004, Gerardo Ganis wrote: > *** Discussion title: xrootd development and discussion > Email replies to [log in to unmask] must include: > In-Reply-To: <[log in to unmask]> > Subject: ...change this to be about your reply. > > Hi Andy, > > > OK, I see it now. That's way too many files hit for me to absorb. I guess > > I don't understand why the massive change. Theoriginal setup was > > *supposed* to prevent the expansion of the macro if NODEBUG was set and > > that shouldn't have caused any compiler problems. So, I don't understand > > the change at all, I guess. > > > > Gerri what was the actual problem? > > When compiling with -DNODEBUG there were basically 3 situations giving errors > or warnings: > > 1) undefined TRACE_xxx symbols > These were defined only for !defined(NODEBUG), but there are cases in > which they still get compiled, though not used. > An empty definition would not have been enough, so I moved the whole > definition out the conditional statement (by looking at the code it > seems to me that this should not harm; alternatively we should put > some default value ... 0x0 ? ). > > Files: > > src/Xrd/XrdTrace.hh > src/XrdOdc/XrdOdcTrace.hh > src/XrdOlb/XrdOlbTrace.hh > src/XrdOss/XrdOssTrace.hh > src/XrdXr/XrdXrTrace.hh > src/XrdXrootd/XrdXrootdTrace.hh > > 2) Incomplete or wrong definition of some macros: for example in > XrdOdc/XrdOdcTrace.hh, there was this > > #ifndef NODEBUG > ... > #define DEBUG(y) if (QTRACE(Debug)) \ > {OdcTrace.Beg(epname); cerr <<y; OdcTrace.End();} > #else > ... > #define DEBUG(x,y) > #endif > > and the compiler was complaining about the number of arguments > to DEBUG; there were a few of these. > A variant of this problem was (eg src/XrdXrootd/XrdXrootdTrace.hh) > > #ifndef NODEBUG > ... > #define TRACING(x) XrdXrootdTrace->What & x > #else > ... > #define TRACING(x) > #endif > > with -DNODEBUG this ends up in code like ' if() ' which gives > an error. > > 3) Lot of warnings from non used 'const char *epname ="..."' variables. > For this I have introduced a macro EPNAME > > #ifndef NODEBUG > #define EPNAME(x) const char *epname = x; > #else > #define EPNAME(x) > #endif > > to avoid having 'ifndef' at each occurence. > > As you see nothing serious, but many small things. > > Gerri > >