[Issue 4288] Error on passing delegate to C linkage function.

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sun Jun 6 11:11:42 PDT 2010


http://d.puremagic.com/issues/show_bug.cgi?id=4288



--- Comment #2 from Adam Chrapkowski <adam.chrapkowski at gmail.com> 2010-06-06 11:11:41 PDT ---
So two questions:

1. Why the following is allowed:
extern (C) void c_func(void delegate());
?

2. What does mean extern (C) void delegate() ?

Delegate is just a 'data structure which consists of two pointers' and anything
more. Something like C delegate does not exists. Linkage is related to
functions not data structures delegate is a data structure.

So if D data structures are disallowed in C functions why the following is
allowed?
extern (C) void c_func(string, Foo);
class Foo{...}
void d_func() {
  scope  foo = new Foo();
  string str = "Hello World!";
  c_func(str, foo);
}

string is a data structure as delegate, foo is a pointer to a data structure.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list