For doing a typedef for a function pointer, we do something like this,
typedef int (*func) (char*);
typedef struct{
char * name;
func f1;
}
As opposed to this, I came across a code, which I don't understand.
typedef int rl_icpfunc_t (char *);
typedef struct {
char *name; /* User printable name of the function. */
rl_icpfunc_t *func; /* Function to call to do the job. */
char *doc; /* Documentation for this function. */
}COMMAND;
This is a code snippet from an example of the libedit library. Can someone please explain this to me?
is defining a function prototype as type.
defines
func
to be a pointer to the former.This is as opposed to defining a function pointer type directly via:
The result of both approches is the same: A pointer
func
, pointing to a function returningint
and taking one argument, that is achar*
.Is it correct to use typedef int rl_icpfunc_t (char *); ?
Yes that means
rl_icpfunc_t
is a function that takes a pointer to char and return and int. You can usert_icpfunct_t
in place of a normal type, thusrl_icpfunc_t *func
means thatfunc
is a pointer to function of typert_icpfunct_t