| Автор | Сообщение |
|---|
Вишня
Зарегистрирован: 19 июля 2005 Сообщений: 3
| 25 августа 2005 7:01 Функция Указатели в C | | |
|
| Где и в каких ситуациях мы можем использовать функцию указатели С в Встроенные?
Может ли кто-нибудь объяснить?
Спасибо ..... Cherry |
|
| Вернуться к началу | |
 |
IanP
Зарегистрирован: 05 Окт 2004 Сообщений: 6454 Помогал: 1535 Расположение: Западное побережье
| 25 августа 2005 7:24 Re: Функция Указатели в C | | |
|
| | Цитата: | | Указатели на функции, не так, как общий указатель другие виды использования. Тем не менее, одну общую использования в ближний указатели на функции в качестве параметра функции вызова. | http://www.cs.cf.ac.uk/Dave/C/node12.html Привет, IanP |
|
| Вернуться к началу | |
 |
echo47
Зарегистрирован: 07 апреля 2002 Сообщений: 4206 Помогали: 566
| 25 августа 2005 8:13 Функция Указатели в C | | |
|
| | Еще одна распространенная заявка функцию обратного вызова. Например, вы хотите Windows для вызова функции аудио рекордер каждый раз, когда Windows получает некоторые образцы от микрофона. Вы даете Windows указатель на аудио рекордер функции. |
|
| Вернуться к началу | |
 |
мат
Зарегистрирован: 26 февраля 2004 Сообщений: 489 Помогали: 35 Место проведения: Сидение для унитаза
| 25 августа 2005 13:23 Re: Функция Указатели в C | | |
|
| Функция указатели, не часто используется в Embedded C, больше для PC сторону программирования. В основном, это указатель на функцию, и в зависимости от функций, которые указателя точек, можно выполнять различные функции, которые должны выполняться в той же строке кода.
Одним из примеров способ его использования состоит в том, что у вас есть массив указателей функция, которая указывает на сообщение погрузчиков, каждый иной тип сообщения, который предназначен для проведения того же индекса в качестве обработчика сообщений.
Таким образом, вы можете позвонить-то вроде | Код: | fnPtr [MSG-> тип] (MSG);
| [/ код]
Добавлено: Одним из возможных использовать указатели на функции встроенного C, представляет собой задачу планировщика. |
|
| Вернуться к началу | |
 |
njfane
Зарегистрирован: 27 Окт 2004 Сообщений: 15
| 26 августа 2005 11:00 Re: Функция Указатели в C | | |
|
| это хороший выбор для замены в случае переключения состояния машин с использованием функции указатель, в случае, когда государственная машина слишком много случаев переключения. это делает программу более компактной. |
|
| Вернуться к началу | |
 |
Bingo600
Зарегистрирован: 26 августа 2004 Сообщений: 239 Помогали: 14
| 27 августа 2005 14:35 Функция Указатели в C | | |
|
| Это неплохой Dokument по этому вопросу
http://www.newty.de/fpt/zip/e_fpt.pdf
http://www.newty.de/fpt/index.html
/ Бинго |
|
| Вернуться к началу | |
 |
btbass
Зарегистрирован: 20 июля 2001 Сообщений: 1137 Помогали: 106 Место проведения: Оберон
| 10 сентября 2005 15:21 Re: Функция Указатели в C | | |
|
| Функция указатели являются очень полезными в встраиваемых систем. Как упорядочить переключения заявление. Кроме того, весьма полезным в меню системы. Когда меня выбрали, а индекс functon указатель массива.
Например, каждое государство здесь функция возвращает следующий государственной перейти на. Распоряжающаяся код целую программу в одну строку!
| Код: | /*--- Государство машина функций. ---*/
UI_16 режиме ожидания (недействительными); UI_16 запуска (недействительными); UI_16 работает (недействительными);
/*--- State Machine. ---*/
Enum STANDBY = (0, начиная, RUNNING);
/************************************************* ******************** * Функция название: главная * Описание: Программа отправной точкой. Инициализировать массив постоянной функцией стрелками. Инициализировать государственной машины в режиме ожидания. Запустить государственной машины.
************************************************** *******************/
SI_16 основных (вакуума) ( UI_16 (* Const Motor_State []) (недействительными) = (режиме, начиная, бег); UI_16 государство = STANDBY;
для (;;){ Государство = Motor_State [государства] (); / * вызов государственной функции * / ) )
/*--- Конечного файла. ---*/
|
|
|
| Вернуться к началу | |
 |
raj_rohit10
Зарегистрирован: 14 июля 2004 Сообщений: 113 Помогали: 1
| 13 сентября 2005 7:19 Re: Функция Указатели в C | | |
|
| привет наилучшим образом использовать функцию указатель того, что я чувствую это implimentation в FSM и как он сказал erlier 2 один звонок функции. |
|
| Вернуться к началу | |
 |
abhishek_elec
Зарегистрирован: 09 сен 2005 Сообщений: 15 Помогали: 1 Место проведения: Индия
| 13 сентября 2005 12:42 Re: Функция Указатели в C | | |
|
| Функция указатели являются полезными, если у вас генерализованной процедуры или Algo и у хочу, чтобы использовать эту процедуру на различные типы данных.
За шт., Если у вас хорошая сортировка Algo, и у хотите использовать Algo же по численности, алфавиту, строк или каких-либо данных, регулируются некоторые правила сортировки. В этом случае у вас просто написать различные "Сравнить" функции для каждого типа данных, и в главном сортировку Algo, у передаст функции указателя в качестве аргумента. Таким образом, те же Algo могут быть использованы различные PPL в соответствии со своими потребностями. Никаких изменений необходимо в основной части Algo. |
|
| Вернуться к началу | |
 |
Google AdSense

| 13 сентября 2005 12:42 Объявления | | |
|
|
|
|
| Вернуться к началу | |
 |
Ясин
Зарегистрирован: 22 января 2006 Сообщений: 9 Помогали: 1
| 27 августа 2006 9:33 Re: Функция Указатели в C | | |
|
| Я currenlty использовали функцию указателей в моем С проектом, который является меню редактора. Цель диссертации состоит в том, чтобы указатели написать эффективный, компактный и быстрый код. Мой код saple здесь;
INT значение [] = (0x1F00, / / Alt S (^ Setup) 0x1400, / / Alt T (^ Шины) 0x1200, / / Alt E (^ Extensions) 0x1800, / / Alt O (^ оператор) 0x2600, / / Alt L (^ логгинг) 0x1900, / / Alt P (^ Пароли) 0x2200, / / Alt G (Settin ^ GS) 0x2300 / / Alt H (^ Справка) );
/ / ------ Указатели на функции --------------------------------- недействительным (* Запустить [8 ])();// Главное меню функций недействительным (* Настройка [3 ])();// Пункт меню функций недействительным (* Шины [9 ])(); недействительным (* Расширение [4 ])(); недействительным (* Оператор [3 ])(); недействительным (* логгинг [2 ])(); недействительным (* Пароли [3 ])(); недействительным (* Настройка [6 ])(); недействительным (* Помощь [10 ])(); //------------------------------------------------ ---------------
Main () ( .... / / Инициализация funtion указатели Запустить [0] = ProcessSetup; Выполнить [1] = ProcessTrunks; Выполнить [2] = ProcessExtensions; Запустить [3] = ProcessOperator; Запустить [4] = ProcessLogging; Запустить [5] = ProcessPasswords; Запустить [6] = ProcessSettings; Выполнить [7] = ProcessHelp; ......
/ / Читать клавиатуре ... I = bioskey (1); если (I) / / Если клавиатура готова ... ключ = bioskey (0); еще продолжать; / / Если клавиатура не готовы затем продолжить его просмотр
/ / Execute меню выбранного пользователем для (J = 0; J <8; J ) ( если (ключевые == значение [J]) ( если (! InProcess) ( InProcess = 1; Выполнить [J] (); ) ) остальное, если (основные == 0x2D00) / / Alt X нажата ... т.е. Выйдем возвращение; ) .......... |
|
| Вернуться к началу | |
 |