указатель на функцию действует как аргумент функции - PullRequest
0 голосов
/ 27 февраля 2019

Вот мой код:

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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...