Problem Passing Struct to C
Mike Parker
aldacron at gmail.com
Fri May 6 02:56:17 PDT 2011
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.
More information about the Digitalmars-d-learn
mailing list