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

 
 
> Вопрос по C-шным указателям
PhX
сообщение Mar 23 2008, 18:32
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249



Программирую под 2812. В библиотеках от TI очень часто встречается следующая конструкция

Код
Module.h
typedef struct module_data {
int in, pastIn ,result; // Persistent data, coefficients etc.
void (*calc)() // Pointer to calculation function
} MODULE;
#define MODULE_DEFAULTS { 0,0,0, (void (*)(Uint32))module_calc }

Module.c
void module_calc(MODULE *p)
{
// compute code
p->result = p->pastIn+p->In;
p->pastIn = p->In;
}


Код
Client.c
MODULE mod = MODULE_DEFAULTS;
void somefunc(void)
{
int foo;
mod.in = 10; // coefficient configuration
mod.calc(&mod);
foo = mod.result; // Use result
}


Спрашивается по какой логике работает компилятор когда указателю типа
void (*calc)()
присваевается
(void (*)(Uint32))module_calc ?
И вообще как можно человеческим языком описать конструкцию:
(void (*)(Uint32))module_calc ?


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post



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

 


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


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