| Autor | Mesaj |
|---|
cireșe
Alăturat: 19 iulie 2005 Posts: 3
| 25 august 2005 7:01 Funcția Trimiteri in C | | |
|
| În cazul în care și în ce situații se poate folosi funcția de indicii în Embedded C?
Poate cineva să explice?
Multumesc ..... Cherry |
|
| Back to top | |
 |
IanP
Alăturat: 05 octombrie 2004 Posts: 6454 A ajutat la: 1535 Locatie: Coasta de Vest
| 25 august 2005 7:24 Re: Funcția Trimiteri in C | | |
|
| | Citat: | | Trimiteri către funcții nu sunt la fel de comune ca indicatorul alte utilizări. Cu toate acestea, o comună de utilizare este într-o trecere la o funcție indicii ca un parametru într-o funcție de apel. | http://www.cs.cf.ac.uk/Dave/C/node12.html Cu respect, IanP |
|
| Back to top | |
 |
echo47
Alăturat: 07 aprilie 2002 Posts: 4206 A ajutat: 566
| 25 august 2005 8:13 Funcția Trimiteri in C | | |
|
| | O altă cerere comună este o funcție callback. De exemplu, Windows pe care doriți să apelați audio recorder funcție de fiecare dată când primește Windows unele probe de la microfon. Ai da Windows un pointer la funcția de înregistrare audio. |
|
| Back to top | |
 |
șah-mat
Alăturat: 26 februarie 2004 Posts: 489 A ajutat: 35 Locație: WC
| 25 aug 2005 13:23 Re: Funcția Trimiteri in C | | |
|
| Funcția indicii nu sunt adesea folosite în încorporat C, mai multe PC-ul pentru partea de programare. În esență, acesta este un pointer la o funcție, precum și în funcție de care funcție de indicatorul de puncte pentru a, aveți posibilitatea să pună în aplicare diferite funcții pentru a fi executat în aceeași linie de cod.
Un exemplu modul de utilizare este că aveți o serie de indicii funcției, ceea ce indică mesaj manipulanții, fiecare de un alt tip de mesaj care este conceput pentru a ține în același indice ca mesajul handler.
Astfel, puteți suna ceva de genul | Cod: | fnPtr [msg-> tip] (mesaj);
| [/ code]
Adăugat: O posibilă utilizarea de indicatori în funcție încorporat C, este un Task Scheduler. |
|
| Back to top | |
 |
njfane
Alăturat: 27 octombrie 2004 Posts: 15
| 26 aug 2005 11:00 Re: Funcția Trimiteri in C | | |
|
| aceasta este o alegere bună pentru a înlocui caz trece într-o stare de mașini folosind funcția pointer, In cazul in care masina a stat prea multe cazuri trece. el face programul mai compact. |
|
| Back to top | |
 |
Bingo600
Alăturat: 26 august 2004 Posts: 239 A ajutat: 14
| 27 aug 2005 14:35 Funcția Trimiteri in C | | |
|
| Aceasta este o drăguț document pe această temă
http://www.newty.de/fpt/zip/e_fpt.pdf
http://www.newty.de/fpt/index.html
/ Bingo |
|
| Back to top | |
 |
btbass
Alăturat: 20 iulie 2001 Posts: 1137 A ajutat: 106 Locatie: Oberon
| 10 Sep 2005 15:21 Re: Funcția Trimiteri in C | | |
|
| Funcția indicii sunt foarte utile în proiectarea sistemelor cu microcontrollere. Ca o declarație simplificată trece. De asemenea, foarte utile în meniul sisteme. În cazul în care elementul de meniu selectat este un index al functon pointer matrice.
De exemplu, fiecare stat aici funcția returnează următorul stat pentru a trece la. Cod de control pentru un întreg program într-o singură linie!
| Cod: | /*--- Membru mașină de funcții. ---*/
UI_16 așteptare (gol); UI_16 incepand (gol); UI_16 să fie difuzate (gol);
/*--- Membru Machine. ---*/
enum (standby = 0, începând, să fie difuzate);
/************************************************* ******************** Funcția * Nume: principale * Descriere: Programul de punct de intrare. Initialise array constantă funcție de indicii. Initialise stare de așteptare la mașină. Executarea unui stat mașină.
************************************************** *******************/
SI_16 principal (gol) ( UI_16 (* Const Motor_State []) (gol) = (așteptare, incepand, rularea); UI_16 = membru de așteptare;
pentru (;;){ Membru = Motor_State [membru] (); / * apel în funcție de stat * / ) )
/*--- Sfârșit de fișier. ---*/
|
|
|
| Back to top | |
 |
raj_rohit10
Alăturat: 14 iulie 2004 Posts: 113 A ajutat: 1
| 13 Sep 2005 7:19 Re: Funcția Trimiteri in C | | |
|
| salut cea mai bună utilizare a funcției pointer ce simt este implimentation de FSM și-a spus ca este erlier 2a este un apel înapoi funcție. |
|
| Back to top | |
 |
abhishek_elec
Alăturat: 09 Sep 2005 Posts: 15 A ajutat: 1 Locatie: India
| 13 Sep 2005 12:42 Re: Funcția Trimiteri in C | | |
|
| Funcția indicii sunt utile atunci când u avea o procedură sau generalizate Algo u și doriți să utilizați această procedură cu privire la diferite tipuri de date.
De ex., Dacă au și o bună sortare Algo, u și doriți să utilizați aceeași Algo pe numere, alfabetică, siruri de caractere sau orice date reglementate de unele sortare regulă. În acest caz, și trebuie să scrie doar un alt "compara" funcție, pentru fiecare tip de date, precum și în principal de sortare Algo, u va trece în funcția indicatorul ca un argument. În acest fel, același Algo poate fi utilizat de către ppl diferite în funcție de nevoie. Nu este necesară modificarea în corpul principal de Algo. |
|
| Back to top | |
 |
Google AdSense

| 13 Sep 2005 12:42 Anunțuri | | |
|
|
|
|
| Back to top | |
 |
yaseen
Alăturat: 22 ianuarie 2006 Posts: 9 A ajutat: 1
| 27 august 2006 9:33 Re: Funcția Trimiteri in C | | |
|
| Nu am folosit funcția currenlty indicii în C mea de proiect, care este condus de meniu editor. Scopul este de teze de indicii pentru a scrie o eficienta, compact si rapid de cod. Cod saple meu este aici;
Valoare int [] = (0x1F00, / / Alt S (^ Setup) 0x1400, / / Alt T (^ trunchiuri) 0x1200, / / Alt E (^ Extensions) 0x1800, / / Alt O (^ Operator) 0x2600, / / Alt L (^ Jurnalizarea) 0x1900, / / Alt P (^ Parolele) 0x2200, / / Alt G (Settin ^ GS) 0x2300 / / Alt H (^ Ajutor) );
/ / ------ Trimiteri către funcții --------------------------------- nule (* Execute [8 ])();// Meniu Principal funcții nule (* Setup [3 ])();// meniu funcții nule (* trunchiuri [9 ])(); nule (* extensii [4 ])(); nule (* operator [3 ])(); nule (* Jurnalizarea [2 ])(); nule (* Parolele [3 ])(); nule (* Setări [6 ])(); nule (* Ajutor [10 ])(); //------------------------------------------------ ---------------
main () ( .... / / Inițializa funtion indicii Execute [0] = ProcessSetup; Execute [1] = ProcessTrunks; Execute [2] = ProcessExtensions; Execute [3] = ProcessOperator; Execute [4] = ProcessLogging; Execute [5] = ProcessPasswords; Execute [6] = ProcessSettings; Execute [7] = ProcessHelp; ......
/ / Citește tastatura ... i = bioskey (1); dacă (i) / / Dacă tastatura gata ... key = bioskey (0); alt continua; / / Dacă tastatura nu gata apoi continua-l uitam
/ / Execute meniul selectat de către utilizator for (j = 0; j <8; j ) ( if (cheie == Valoare [j]) ( if (! inProcess) ( inProcess = 1; Execute [j] (); ) ) else if (cheie == 0x2D00) / / Alt X presat ... adică Părăsiți întoarcere; ) .......... |
|
| Back to top | |
 |