Function pointer callback from C
Mike Johnson
mrjohnson at miketec.org
Sun Feb 25 22:50:39 PST 2007
I was having a lot of trouble getting the delegate declaration to work
and dmd was saying something about not implicitly converting "void (C *)
blah".
I didn't know how to declare a delegate with C conventions. When I added
the extern(c), it works. I'm not sure I understand why yet.
Here's the error message without extern:
mainwindow.d(43): function gtk.gtkwidget.GtkWidget.connectSignal
(char[],void delegate(int* widget, void* data),void*,GConnectFlags) does
not match parameter types (char[11],void delegate(int* widget, void*
data),void*,GConnectFlags)
mainwindow.d(44): Error: cannot implicitly convert expression
(&this.on_toolNotebook_changePage) of type void delegate(int* widget,
void* data) to void delegate(int* widget, void* data)
To my eyes, those types look the same. *shrugs*
Derek Parnell wrote:
> On Sun, 25 Feb 2007 22:12:51 -0800, Mike Johnson wrote:
>
>> The function doing black magic:
>>
>> extern(C) public void connectSignal(
>
> . . .
>
>> The signal handler itself:
>>
>> private extern(C) void on_sv_changed(int *widget, int *data) {
>
> Why do you use "extern (C)" ?
>
More information about the Digitalmars-d-learn
mailing list