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
----------------------------------

Reply via email to