casting void ** a 2D array de int - C

estoy tratando de lanzar un puntero void ** a un int ** array 2D en C

Aquí está el código con el que estoy tratando de trabajar (con todos los bits extraños eliminados):

\*assume that i have a data structure called graph with some 
 *element "void** graph" in it and some element "int order" */

void initialise_graph_data(graph_t *graph)
{
    void **graph_data = NULL;
    int (*matrix)[graph->order];
    size_t size = (graph->order * graph->order) * sizeof(int);

    graph_data = safe_malloc(size); /*safe malloc works fine*/
    matrix = (int(*)[graph->order])graph_data;
    graph->graph = graph_data;
}

cuando compilo eso, funciona bien, pero me advierte que la variable 'matrix' está establecida pero no se usa. Realmente no quiero tener que usar la variable de matriz interina porque se supone que la función solo inicializa la matriz, no pone nada en ella; pero si intento convertir graph_data directamente a un int ** cuando lo estoy configurando para graficar-> graficar así:

graph->graph = (int(*)[graph->order])graph_data;

me da una asignación de advertencia de tipo de puntero incompatible.

¿No estoy lanzando correctamente? ¿Alguien tiene alguna sugerencia sobre cómo puedo hacer que funcione sin la variable "matriz" interina? o si no, ¿qué puedo hacer con esa variable para que no me dé la advertencia de que está configurada pero no se usa?

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta