RE:ROOTCINT problems with long long

From: Masaharu Goto (MXJ02154@nifty.ne.jp)
Date: Wed Jul 21 1999 - 17:05:11 MEST


Dear Gora,

Thank you for reporting this. I found a problem in CINT when you use it
in typedef. I'll fix this in cint5.14.10.

I understand that you do not want to change system header file. Workaround
is to copy it into other directory, change the __quad_t difition and give
the directory to rootcint by -I.

  $ mkdir $HOME/dummyinclude
  $ cp /usr/include/gnu/types.h $HOME/dummyinclude/types.h
  $ ### edit types.h as you like. For example,
       #ifndef __CINT__
       typedef long long int __quad_t;
       #else
       typedef struct {
         long int __val[2];
       } __quad_t;
       #endif
   $ rootcint ... ... ..  -I$HOME/dummyinclude ... ... ...

Thank you
Masaharu Goto


======================================================================
Hi,
   I am having a problem using version 2.22.09 on a Linux Redhat 5.2
installation with version 2.0.36 of the kernel. I have a ROOT class that
is a wrapper around a GPIB device driver written by someone else that uses
/usr/include/gnu/types.h. When using gcc, this header file defines a type,
__quad_t as:
   typedef long long int __quad_t;
and, later uses,
   typedef __quad_t *__qaddr_t;

When I try to generate a dictionary with the command,
  $(ROOTSYS)/bin/rootcint -f GPIBDict.cxx -c -p GPIB.h GPIBLinkDef.h
rootcint does not like the long long int part, giving an error message:
Error: class,struct,union or type __quad_t not defined  
FILE:/usr/include/gnu/types.h LINE:42
(line 42 is where the *__qaddr_t type is defined). I am positive that the
problem is with the long long part as if I use the alternate (non-gcc)
definition of __quad_t, viz.,
typedef struct
  {
    long int __val[2];
  } __quad_t;
everything is fine. The obvious workaround is to use the struct version, but
as I only have gcc, that would mean changing the system header files, which
I am loath to do. Any suggestions are welcome. Thanks in advance.

Regards,
Gora



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