Prototipo del analizador de comandos del módulo Apache

Estoy creando un módulo Apache2 y estoy experimentando un extraño problema de compilación. Este es el prototipo de mi función utilizada para analizar el comando de configuración llamado "analytics_ip":

static const char *apr_cfg_set_analytics_ip(cmd_parms *cmd, void *config, const char *data);

Esta es una variedad decommand_rec estructuras que contienen punteros a esta función:

static const command_rec apr_cmds[] =
{
 AP_INIT_TAKE1("analytics_ip", apr_cfg_set_analytics_ip, NULL, OR_ALL, ""),
 { NULL }
};

La estructura command_rec se declara en el archivo de encabezadohttp_config.h

typedef struct command_struct command_rec;
struct command_struct {
    /** Name of this command */
    const char *name;
    /** The function to be called when this directive is parsed */
    cmd_func func;
    /** Extra data, for functions which implement multiple commands... */
    void *cmd_data;
    /** What overrides need to be allowed to enable this command. */
    int req_override;
    /** What the command expects as arguments */
    enum cmd_how args_how;

    /** 'usage' message, in case of syntax errors */
    const char *errmsg;
};

Cuando sigocmd_func, llega a la siguiente declaración:

typedef const char *(*cmd_func) ();

Si no me equivoco, esto significa "puntero para funcionar devolviendo el puntero a char y no aceptando ningún argumento". como puede ser esto posible? La función de análisis de comandos debe aceptar al menos un parámetro que contenga un valor de módulo de variable de configuración correspondiente a esa función.

Estoy usando g ++ para compilar este módulo. Mensaje de error:

mod_xxx.h:65:2: error: invalid conversion from ‘const char* (*)(cmd_parms*, void*, const char*) {aka const char* (*)(cmd_parms_struct*, void*, const char*)}’ to ‘cmd_func {aka const char* (*)()}’ [-fpermissive]
  };

Gracias por adelantado

Respuestas a la pregunta(2)

Su respuesta a la pregunta