building and analysing C structs with Storable

Stefan O'Rear stefanor at cox.net
Sun Oct 14 16:27:13 EDT 2007


On Sun, Oct 14, 2007 at 10:05:27PM +0200, Henning Thielemann wrote:
>
> On Sun, 14 Oct 2007, Stefan O'Rear wrote:
>
>> On Sun, Oct 14, 2007 at 09:28:45PM +0200, Henning Thielemann wrote:
>>> Do different C compilers on the same platform actually use different
>>> layouts for structs?
>>
>> Yes, because there are tradeoffs involved.  On x86, the optimal
>> alignment for long double is 8 bytes, but a lot of people aren't crazy
>> about 6 bytes of padding per 10 byte datum, so some compilers default to
>> 4 byte alignment.
>>
>>> If yes, how can I find out, with which compiler a
>>> library was compiled?
>>
>> Ask the person who did the compiling.
>
> ... but then c2hs cannot do it better (=automatically) than the "compiler 
> dependent Haskell module" approach, can it?

On second thought, you're right.  It would work.  However, you still
need the information in the header file, due to the possibility of
things like __attribute__((packed)).  c2hs reads and fully parses the
headers themselves; so must your TH binding generator.

Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://www.haskell.org/pipermail/libraries/attachments/20071014/97370535/attachment.bin


More information about the Libraries mailing list