Er, my apologies. The code on that post won't actually do what it's supposed to. I wrote my testcode originally with very idiosyncratic variable names, and hadn't actually recompiled the code after I changed them for my post. This should actually work:

structc.c:
-------

#include <stdio.h>

struct passingstruct {
        unsigned int a;
        unsigned int b;
        int c;
};

void printatest (struct passingstruct value)
{
        printf ("hello!\n");
        printf ("%u %u %d\n", value.a, value.b, value.c);
}
----
structd.d:
------
import std.stdio;

struct passingstruct {
        uint a;
        uint b;
        int c;
        
        void printme () {
                writefln ("%d %d", a, b);
        }
}

int main (char[][] args)
{
        passingstruct test = passingstruct( 300, 200, 0);
        writefln ("%u %u %d", test.a, test.b, test.c);
        
        printatest (test);
        return 0;
}

extern (C)
{
        void printatest (passingstruct value);
}

Reply via email to