[Cython] a problem with sizeof() return type
Michael Abshoff
michael.abshoff at googlemail.com
Tue Feb 3 21:43:50 CET 2009
Jason Evans wrote:
> Michael Abshoff wrote:
>> Lisandro Dalcin wrote:
>>> Cython treats sizeof() as if it returns 'int', but IMHO it should be 'size_t'.
>> Well, you might be technically correct since that is what the C standard
>> asks for, but according to various literature, i.e. for example
>>
>> http://publications.gbdirect.co.uk/c_book/chapter5/sizeof_and_malloc.html
>>
>> "The sizeof operator returns the size in bytes of its operand. Whether
>> the result of sizeof is unsigned int or unsigned long is implementation
>> defined—which is why the declaration of malloc above ducked the issue by
>> omitting any parameter information; "
>
> That book appears to have been published in 1991...
Yeah, it has been a while, but then Python requires a C89 compiler :)
> Personally, I've found the lack of native size_t knowledge in Cython to
> be a major pain. In practice though, the following is sufficient for
> every modern system I know of, with the likely exception of Windows:
>
> cdef extern from "sys/types.h":
> ctypedef unsigned long size_t
Well, make it unsigned long long on 64 bit Windows and it ought to work
nearly everywhere. I am not aware of any LLP64 bit OS that Cython
supports besides 64 bit Windows. Obviously there is no sys/types.h on
Windows, but that is a different story :)
> Jason
Cheers,
Michael
> _______________________________________________
> Cython-dev mailing list
> Cython-dev at codespeak.net
> http://codespeak.net/mailman/listinfo/cython-dev
>
More information about the Cython-dev
mailing list