question about function pointer

K

key9

Hi all

passing argument of "lib_init_terminal" from incompatible pointer type

invoke code slice
=================
lib_init_terminal (&sys_init_signals);


prototype
=========
void sys_init_signals (void);


int lib_init_terminal (void *ptr_sys_init_signals(void))
{
(*ptr_sys_init_signals)();
}



where 's the mistake?




thank you very much

your key9
 
M

Martin Ambuhl

key9 said:
Hi all

passing argument of "lib_init_terminal" from incompatible pointer type

invoke code slice
=================
lib_init_terminal (&sys_init_signals);


prototype
=========
void sys_init_signals (void);


int lib_init_terminal (void *ptr_sys_init_signals(void))
{
(*ptr_sys_init_signals)();
}



where 's the mistake?

Why is it so hard for people to post compilable code? Surrounding your
call with 'int main(void) {' and '}' would have been easier for you that
those stupid tags with equal-sign underlining.

The answer:

void sys_init_signals(void);

#if 0
/* your illegal form, which claims ptr_sys_init_signals returns
a pointer-to-void */
int lib_init_terminal(void *ptr_sys_init_signals(void))

/* a form that works */
int lib_init_terminal(void (*ptr_sys_init_signals) (void))
#endif
/* and a cleaner form that works */
int lib_init_terminal(void ptr_sys_init_signals(void))
{
(*ptr_sys_init_signals) ();
return 0; /* added. You claim lib_init_terminal
returns an int, but you don't return
one. */
}

int main(void)
{
lib_init_terminal(&sys_init_signals);
return 0;
}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,521
Members
44,995
Latest member
PinupduzSap

Latest Threads

Top