I would be very thankful if you could explain me what the following means:
void bar(char *a, char *b, unsigned short c) // (2)
{
...
}
void (*foo(void))(char *, char *, unsigned short) // (1)
{
return bar;
}
In particular,
- Why there are no variable names in (1)?
- What does
void (*foo(void))mean? How can*foo(void)be a name? - What does
return barmean? Returns it the address of thebarsource code, or the result frombar, or else? - Is there any feature in making these signatures so complicated?
- Could you give an example of the usage?