pthread_create e passando um inteiro como o último argumento

Eu tenho as seguintes funções:

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

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

Na compilação, há alguns erros sobre a transmissão ((void *) i eint a = (int) i). Como posso passar um inteiro como o último argumento depthread_create devidamente?

questionAnswers(5)

yourAnswerToTheQuestion