реклама на сайте
подробности

 
 
> Вызов разных функций с разными праметрами через указатель, Возможно ли такое в СИ?
Alla_student
сообщение Oct 9 2015, 08:54
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 84
Регистрация: 5-04-11
Пользователь №: 64 146



Подскажите пожалуйста -

Возможен, ли, вызов разных функций с разными праметрами через указатель?
Язык СИ (Keil)?
Если да, то как лучше реализовать (желательно с примером).

Я хотела вызывать различные функции через функцию указатель и различными параметрами, которые могут меняться (время события, состояние и т.д.) и передавать вызываемой функции.

Заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
smalcom
сообщение Oct 9 2015, 10:09
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Можно, но через приведение типа. Пример:
Код
#include <stdio.h>

void func1()
{
    printf("func1\n");
}

int func2(int pVal)
{
    printf("func2(%i)\n", pVal);
    
    return pVal;
}

int main()
{
typedef void(*func1_type)();
typedef int(*func2_type)(int);

void* func_ptr;

    printf("call1\n");
    func_ptr = (void*)func1;
    ((func1_type)func_ptr)();

    printf("call2\n");
    func_ptr = (void*)func2;
    ((func2_type)func_ptr)(3);

    printf("end\n");

    return 0;
}


Вывод
Цитата
call1
func1
call2
func2(3)
end

-------------------
а если вам надо во время выполнения определять функцию какого типа вызвать, то лучше перейти на C++, там есть средства для этого.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th August 2025 - 13:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.0135 секунд с 7
ELECTRONIX ©2004-2016