callback parameter order question

evilrat evilrat666 at gmail.com
Sat May 11 04:28:09 PDT 2013


On Saturday, 11 May 2013 at 10:44:01 UTC, gedaiu wrote:
> On Saturday, 11 May 2013 at 10:04:54 UTC, Andrej Mitrovic wrote:
>> On 5/11/13, gedaiu <szabobogdan at yahoo.com> wrote:
>>> if i do that, i get this error
>>
>> I don't know what "ahc_echo" is, but I imagine you'll have to 
>> make it
>> an extern(C) function.
>
> Hi,
>
>
> i have this code, and i don't think i can add extern(C) there
>
> void start() {
>
> auto ahc_echo = function(void* cls,
> 	MHD_Connection* connection,
> 	const char *url,
> 	const char *method,
> 	const char *ver,
> 	const char *upload_data,
> 	size_t *upload_data_size,
> 	void **ptr) {
> 	        ...
> };
>
> d = MHD_start_daemon(MHD_FLAG.MHD_USE_THREAD_PER_CONNECTION, 
> 8080, null, null, ahc_echo, null, MHD_OPTION.MHD_OPTION_END);
>
> }
>
>
> and if i create a function like this:
>
>
> extern(C) int ahc_echo(void* cls,
> 	MHD_Connection* connection,
> 	const char *url,
> 	const char *method,
> 	const char *ver,
> 	const char *upload_data,
> 	size_t *upload_data_size,
> 	void **ptr) {
> ....
> };
>
>
> i get this error:
> Error: function cmsutils.CMServer.ahc_echo (void* cls, 
> MHD_Connection* connection, const(char*) url, const(char*) 
> method, const(char*) ver, const(char*) upload_data, ulong* 
> upload_data_size, void** ptr) is not callable using argument 
> types ()
>
> Error: expected 8 function arguments, not 0

looks like you are trying to pass func as parameter in this func, 
but you forgot to take its address

d = MHD_start_daemon(MHD_FLAG.MHD_USE_THREAD_PER_CONNECTION, 
8080, null, null, &ahc_echo, // <-- here
null, MHD_OPTION.MHD_OPTION_END);


More information about the Digitalmars-d-learn mailing list