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