|
передача указателя на функцию в функцию |
|
|
|
 |
Ответов
|
Nov 9 2007, 07:00
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(Непомнящий Евгений @ Nov 9 2007, 09:21)  Когда вы вызываете функцию, компилятору надо знать типы передаваемых параметров и тип возвращаемого значения, чтобы расположить все это на стеке и в регистрах нужным образом. Если вызвать функцию void func(char t), используя указатель void (*P)(void*), то что из этого получится будет целиком зависеть от реализации компилятора. Например, если аргументы передаются в стеке и функция должна их выбрать сама, то будет плохо. Тут второй вопрос - а зачем вам это надо? Что значит - передать аргумент неизвестного типа? Максимум - это указатель void*... Но смешивать указатель и char, как в вашем примере - ИМХО, прямой путь поиметь кучу траблов. Поддерживаю. Можно, конечно, извратиться, но это будет коряво и непереносимо. Вы лучше изложите задачу, и я уверен, что кто-нибудь предложит более элегантное решение.
|
|
|
|
|
Nov 9 2007, 08:26
|
Частый гость
 
Группа: Свой
Сообщений: 107
Регистрация: 9-07-05
Пользователь №: 6 656

|
Цитата(scifi @ Nov 9 2007, 10:00)  Поддерживаю. Можно, конечно, извратиться, но это будет коряво и непереносимо. Вы лучше изложите задачу, и я уверен, что кто-нибудь предложит более элегантное решение. А задача такая запускать произвольную функцию по таймеру через время Time. У запускаемой функции неизвестен тип параметра (так надо ) в общем случае и возвращаемый параметр для этого мы должны передать ее адрес в функцию. DelayStart(unsigned Time, *Func(?)); Подумал в С++ есть механизм передачи по ссылке F(&data1,&Func1) может тут как то поэксперементировать?
|
|
|
|
|
Nov 9 2007, 09:09
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Jurdens @ Nov 9 2007, 11:26)  А задача такая запускать произвольную функцию по таймеру через время Time. Произвольную функцию, но она д.б. известна когда: - на этапе компиляции - на этапе выполнения. Цитата(Jurdens @ Nov 9 2007, 11:26)  У запускаемой функции неизвестен тип параметра (так надо ) Т.е. на этапе выполнения параметр известен, так ? Цитата(Jurdens @ Nov 9 2007, 11:26)  У запускаемой функции неизвестен ... и возвращаемый параметр У запускаемой функции возвращаемый параметр известен всегда. Цитата(Jurdens @ Nov 9 2007, 11:26)  Подумал в С++ есть механизм передачи по ссылке F(&data1,&Func1) может тут как то поэксперементировать? В С и С++ есть передача параметра по значению (по умолчанию) и по ссылке. PS. Я не понимаю, Вы решаете конкретную задачу или теоретик на досуге ?
|
|
|
|
Сообщений в этой теме
Jurdens передача указателя на функцию в функцию Nov 8 2007, 13:39 Николай Z Цитата(Jurdens @ Nov 8 2007, 16:39) Какие... Nov 8 2007, 14:21 Николай Z Цитата(Непомнящий Евгений @ Nov 9 2007, 09... Nov 9 2007, 09:36  Jurdens В С и С++ есть понятие указателя на неопределенн... Nov 9 2007, 10:40   alexander55 Цитата(Jurdens @ Nov 9 2007, 13:40)
Я по... Nov 9 2007, 10:53   Непомнящий Евгений Цитата(Jurdens @ Nov 9 2007, 13:40) ...
з... Nov 9 2007, 11:10   Николай Z Цитата(Jurdens @ Nov 9 2007, 13:40) В С ... Nov 9 2007, 11:59   Oldring Цитата(Jurdens @ Nov 9 2007, 13:40) Можно... Nov 13 2007, 14:25 Непомнящий Евгений Цитата(Jurdens @ Nov 9 2007, 11:26) А зад... Nov 9 2007, 10:27
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|