Разъяснение указателей в функции makecontext - PullRequest
0 голосов
/ 23 октября 2011

Я выполняю библиотеку пользовательских потоков как часть моего задания.Я не понял функцию makecontext:

makecontext(&(mainthread->threadctx),(void(*)(void))start_funct,1,args)

Что именно означает (void(*)(void))start_funct?И почему я должен написать это так?Разве я не могу просто написать это как

makecontext(&(mainthread->threadctx),start_funct,1,args) ?

Пожалуйста, будьте терпеливы со мной, я еще не знаком с указателями:)

1 Ответ

1 голос
/ 23 октября 2011

void(*)(void) означает «указатель на функцию, которая не принимает параметров и возвращает void».

Следовательно, (void(*)(void))start_funct приводит к start_funct (который, как мы можем предположить, является своего рода указателем на функцию)`к вышеуказанному типу.(Существует очень полезный онлайн-инструмент , который может помочь вам в этом, пока вы не освоитесь с чтением объявлений).

Вы должны написать его таким образом, поскольку подпись start_functне void start_funct(void), поэтому требуется литье.

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