On Monday, 29 April 2013 at 20:51:50 UTC, Walter Bright wrote:
On 4/29/2013 1:03 PM, monarch_dodra wrote:
On Monday, 29 April 2013 at 18:34:46 UTC, Walter Bright wrote:
On 4/29/2013 10:19 AM, monarch_dodra wrote:
I'm getting strange behavior trying to cast to pure. This is my
test program:

You're casting a C function to a D function. This will cause crashes.

OK, so say I have a documented pure C function, how do I call it from a pure scope? You say, take the address and cast it, but not if it's C...

extern (C) {
    int foo(int);
}

extern (C) {
    pure int function(int) fp_pure_t;
}

...
cast(fp_pure_t)(&foo)

Thanks. That (kinda) worked. I just had to add an alias, because the compiler was complaining about: "Error: fp_pure_t is used as a type"

This works though:

//====
extern (C) {
    int foo(int);
}
extern (C) {
    alias pure int function(int) fp_pure_t;
}
...
cast(fp_pure_t)(&foo)
//====

That works.

Reply via email to