pthread_create y pasando un entero como el último argumento

Tengo las siguientes funciones:

void *foo(void *i) {
    int a = (int) i;
}

int main() {
    pthread_t thread;
    int i;
    pthread_create(&thread, 0, foo, (void *) i);
}

En la compilación, hay algunos errores sobre el casting ((void *) i yint a = (int) i). ¿Cómo puedo pasar un entero como el último argumento depthread_create ¿correctamente?

Respuestas a la pregunta(5)

Su respuesta a la pregunta