On 30-Jan-2003 Nick Ing-Simmons wrote: > <[EMAIL PROTECTED]> writes: >>First a big "Hello", since I just joined the list. >> >>Now a question, I am putting a XS wrapper over a 'C' library >>we have. The header files have defined types, in paticular >>'#define LLONG long long', when I compile the module, I get >>a parse error for a header file that contains a structure that >>uses the "LLONG" type. > > That should work for XS code itself, but h2xs may be upset. > (Personally I never use h2xs - I always write XS by hand...) > > How about using a typedef instead of a #define > >#if HAS_LONG_LONG > typedef long long LLONG; >#else > typedef i64 LLONG; >#endif > > Have you #include-d the header in the .xs file? > When you say you "get a parse error" from what? xsubpp, or C compiler or perl? > or "h2xs"? >
It is the compiler, cc -c -I/usr/local/include/tools -fno-strict-aliasing -I/usr/local/include -O -DVERSION=\"0.01\" -DXS_VERSION=\"0.01\" -DPIC -fpic "-I/usr/local/lib/perl5/5.6.1/i386-freebsd/CORE" Fmt.c In file included from Fmt.xs:5: /usr/local/include/tools/fmt.h:146: syntax error before `LLONG' *** Error code 1 ..it does compile with the C-utils, I do include the header file in the xs. The LLONG is defined in another header file that is included in the fmt.h. >>I was able to get it to compile by >>changing the LLONG to "long long", but I want to use the #define >>since it is different for our different arch. Do I need to have >>a constant function for the #define? I believe you only need the >>constant funcs if the #define needs to be accessible by perl user, >>right?? >> >> Thanks, >> STH >> >>---------------------------------- >>E-Mail: [EMAIL PROTECTED] >>Date: 30-Jan-2003 >>Time: 09:16:44 >>---------------------------------- > -- > Nick Ing-Simmons > http://www.ni-s.u-net.com/ > ---------------------------------- E-Mail: [EMAIL PROTECTED] Date: 30-Jan-2003 Time: 11:49:52 ----------------------------------
