这是我的代码:
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)