Problem Passing Struct to C

Jacob Carlborg doob at me.com
Fri May 6 11:42:19 PDT 2011


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


More information about the Digitalmars-d-learn mailing list