Вот мой код:
void * test(void *args) {
...
}
int main() {
...
ret = pthread_create(&tid, NULL, test, NULL);
...
return 0;
}
Конечно, он работает хорошо.Но я обнаружил, что:
void test(void) {
...
}
int main() {
...
ret = pthread_create(&tid, NULL, (void*)&test, NULL);
...
return 0;
}
также может быть успешно скомпилировано.
Третий параметр функции pthread_create:
void *(*start_routine) (void *)
У меня такой вопрос:
Почему компилятортрактовать (void*)&test
как void* (*)(void *)
gcc версия: 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.10)