You have two options - sloppy, but easy or accurate, but painstaking.
Sloppy
typedef struct{
char *ename;
char *pname[3];
void (*function)();
} Example;
Example ex[3] =
{
{ "func1", { "x", }, func1 },
{ "func2", { "x", "y", }, func2 },
{ "func3", { "x", "y", "z", }, func3 },
};
, -Wstrict-prototypes GCC. , , - char **pname, , , .
typedef struct{
char *ename;
char *pname[3];
union
{
void (*f1)(int x);
void (*f2)(int x, int y);
void (*f3)(int x, int y, int z);
} u;
} Example;
Example ex[3] =
{
{ "func1", { "x", }, .u.f1 = func1 },
{ "func2", { "x", "y", }, .u.f2 = func2 },
{ "func3", { "x", "y", "z", }, .u.f3 = func3 },
};
, C99. .