Conversión de argumentos: puntero (normal) a puntero de vacío, ¿se necesita lanzar?

Cuando se asigna ao desdevoid-puntos no es necesario emitir (C99 §6.3.2.2 sub 1 / §6.5.16.1 sub 1). ¿Es esto también cierto cuando pasa un (por ejemplo,int-) puntero a una función que espera unvoid-¿puntero?

Por ejemplo:

void foo(void * p){
    // Do something
}

int main(){
    int i = 12;
    foo(&i); // int * to void *: no cast needed?
}

Cuando compilo esto con GCC (4.8.1, MinGW-32) no obtengo errores ni advertencias (con-Wall & -pedantic).

A diferencia deen esta respuesta se sugiere que se necesita un elenco para esta convocatoria (para eliminar-Wformat advertencias):

int main(){
    int i = 12;
    printf("%p\n", &i);
}

Pero en mi caso GCC no se queja.

Entonces: ¿son necesarios los moldes cuando se pasa unvoid-punto a una función que espera unavoid-¿puntero?

Respuestas a la pregunta(1)

Su respuesta a la pregunta