May 06, 2011 Re: Problem Passing Struct to C | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jacob Carlborg | On 5/6/11, Jacob Carlborg <doob@me.com> wrote:
> On 2011-05-06 11:56, Mike Parker wrote:
>> Testing out a new binding I knocked up for a C library. One of the functions takes a struct by value. It looks somewhat like this:
>>
>> struct S {}
>> struct Color
>> {
>> float r,g,b,a;
>> }
>>
>> extern C void function(S* s, Color color, int x, int y, in char*)
>> draw_text;
>>
>> Now, there is another function that adjusts color values when making a color. In C, it is sometimes used like so:
>>
>> draw_text(s, map_color(255, 0, 0, 0), 0, 0, "Blarg");
>>
>> When I'm calling draw_text like this on the D side, my text output is corrupt. I keep getting weird things like ^^P^, but in the appropriate color. It's consistent, no matter what string I pass, but is different for each color value. If I call draw_text like this:
>>
>> auto color = map_color(...);
>> draw_text(s, color, 0, 0, "Blarg");
>>
>> It works as expected. Has anyone else seen this, or know of a workaround? I'm going to dig through bugzilla later on and see if it's been reported already, but I'm curious if anyone knows of the cause off hand.
>>
>
> Don't know if it has anything to do with the problem but you have to watch out with the floats, they are initialized to NaN.
>
> --
> /Jacob Carlborg
>
And char arrays are initialized to 0xFF, which could be another source of problems.
|
May 08, 2011 Re: Problem Passing Struct to C | ||||
---|---|---|---|---|
| ||||
Posted in reply to Robert Clipsham | On 2011-05-06 21:05, Robert Clipsham wrote: > On 06/05/2011 19:40, Jacob Carlborg wrote: >>> No, D implicitly casts string literals to zero-terminated const(char)*. >>> That part is fine. >>> >>> -Steve >> >> Since when? > > Since const was introduced, before then they implicitly casted to char* > instead. And that has been the case since early D1. I think I've heard of it but I thought that was before D1 and had been remove. -- /Jacob Carlborg |
Copyright © 1999-2021 by the D Language Foundation