| Laatija | Viesti |
|---|
kirsikka
Liittynyt: 19 heinäkuu 2005 Posts: 3
| 25 elokuu 2005 7:01 Tehtävä Osoittimet C | | |
|
| Missä ja millä tilanteissa voimme käyttää funktio-osoittimia C sulautettujen?
Voiko joku selittää?
Kiitos ..... Cherry |
|
| Palaa alkuun | |
 |
IanP
Liittynyt: 05 lokakuu 2004 Posts: 6454 Auttanut: 1535 Location: West Coast
| 25 elokuu 2005 7:24 Re: Tehtävä Osoittimet C | | |
|
| | Quote: | | Osoittimet toiminnot eivät ole yhtä yleisiä kuin muissa pointer käyttötarkoituksiin. Kuitenkin yksi yhteinen käyttö on ohimenevä viitteet toiminnon kuin parametria toiminto soittaa. | http://www.cs.cf.ac.uk/Dave/C/node12.html Terveisin, IanP |
|
| Palaa alkuun | |
 |
Google AdSense

| 25 elokuu 2005 7:24 Mainokset | | |
|
|
|
|
| Palaa alkuun | |
 |
echo47
Liittynyt: 07 huhtikuu 2002 Posts: 4206 Auttanut: 566
| 25 elokuu 2005 8:13 Tehtävä Osoittimet C | | |
|
| | Toinen yleinen sovellus on takaisinsoittoa toiminto. Jos esimerkiksi haluat Windowsin soittaa audio-tallennin toiminnon joka kerta, kun Windows saa joitakin näytteitä mikrofonista. Annat Windows yksi osoitin teidän audio-tallennin-toimintoa. |
|
| Palaa alkuun | |
 |
matti
Liittynyt: 26 helmikuu 2004 Posts: 489 Auttanut: 35 Paikka: WC-istuin
| 25 elokuu 2005 13:23 Re: Tehtävä Osoittimet C | | |
|
| Tehtävä viitteet eivät usein käytetty sulautettujen C enemmän PC puolella mukainen. Pohjimmiltaan se on osoitin haluamasi toiminnon, ja sen mukaan, mikä toiminto osoitinta huomauttaa, voit toteuttaa erilaisia tehtäviä täytetään samalla rivillä koodia.
Yksi esimerkki tapa käyttää sitä, että sinulla on joukko funktio-osoittimia, mikä viittaa viesti käsittelijät, ja jokainen toisenlaisen viestin tyyppi, joka on suunniteltu pitämään saman indeksin viestin käsittelijälle.
, Jotta voit soittaa jotain | Code: | fnPtr [msg-> type] (msg);
| [/ code]
Lisätty: Yksi mahdollinen käyttö funktio-osoittimia sulautettujen C, on tehtävä scheduler. |
|
| Palaa alkuun | |
 |
njfane
Liittynyt: 27 lokakuu 2004 Posts: 15
| 26 elokuu 2005 11:00 Re: Tehtävä Osoittimet C | | |
|
| se on hyvä valinta korvata kytkin tapauksessa valtion koneella käyttäen toiminnon osoitin, siinä tapauksessa, että valtion kone on liian monta kytkin tapauksissa. se tekee ohjelman tasaisempi. |
|
| Palaa alkuun | |
 |
Bingo600
Liittynyt: 26 elokuu 2004 Posts: 239 Auttanut: 14
| 27 elokuu 2005 14:35 Tehtävä Osoittimet C | | |
|
| Tämä on mukava dokument tästä aiheesta
http://www.newty.de/fpt/zip/e_fpt.pdf
http://www.newty.de/fpt/index.html
/ Bingo |
|
| Palaa alkuun | |
 |
btbass
Liittynyt: 20 heinäkuu 2001 Posts: 1137 Auttanut: 106 Paikka: Oberon
| 10 Sep 2005 15:21 Re: Tehtävä Osoittimet C | | |
|
| Tehtävä viitteet ovat erittäin hyödyllisiä sulautetut järjestelmät. Kuten virtaviivaisten kytkin julkilausuman. Myös erittäin hyödyllistä valikossa järjestelmiä. Jos valikkotoimintoa elinkaari on indeksi, joka functon pointer array.
Esimerkiksi jokaisen valtion toiminta tässä palauttaa ensi tilassa vaihtaa. Valvonnasta koodi koko ohjelma on yksi rivi!
| Code: | /*--- Valtion koneen toimintoja. ---*/
UI_16 valmiustilassa (void); UI_16 alkaen (void); UI_16 käynnissä (void);
/*--- State Machine. ---*/
enum (STANDBY = 0, LÄHTÖAINEISTA, RUNNING);
/************************************************* ******************** * Tehtävä Nimi: main * Kuvaus: Program maahantulopaikkaan. Initialise array jatkuva funktio-osoittimia. Initialise valtion koneen valmiustilaan. Execute valtion koneella.
************************************************** *******************/
SI_16 main (void) ( UI_16 (* const Motor_State []) (void) = (valmiustilassa alkaen, juokseva); UI_16 valtion = STANDBY;
varten (;;){ Valtion = Motor_State [valtio] (); / * Puheluista valtion toiminnon * / ) )
/*--- Loppu tiedosto. ---*/
|
|
|
| Palaa alkuun | |
 |
raj_rohit10
Liittynyt: 14 heinäkuu 2004 Posts: 113 Auttanut: 1
| 13 Sep 2005 7:19 Re: Tehtävä Osoittimet C | | |
|
| hei paras mahdollinen käyttö toiminto pointer mikä on mielestäni implimentation Mikronesian ja koska se on kertonut erlier 2. yksi soittaa takaisin-toiminto. |
|
| Palaa alkuun | |
 |
abhishek_elec
Liittynyt: 09 Sep 2005 Posts: 15 Auttanut: 1 Sijainti: Intia
| 13 Sep 2005 12:42 Re: Tehtävä Osoittimet C | | |
|
| Tehtävä viitteet ovat hyödyllisiä, kun u on yleinen menettely tai algo ja u halua käyttää tätä menettelyä erilaisia tietoja.
Ex., Jos u on hyvä lajittelu algo, ja u halua käyttää samoja algo lukumäärästä, aakkosellinen, merkkijonoja tai mitään tietoja hallitaan noin lajittelu sääntö. Siinä tapauksessa, u on vain kirjoittaa eri "vertailla"-toimintoa kunkin tietotyyppi ja tärkeimmät lajittelu algo, u välitän toiminnon osoitin kuin väitettä. Näin saman algo voidaan käyttää eri ppl mukaan niiden tarvetta. Ei muutoksia tarvitaan päärungolla algo. |
|
| Palaa alkuun | |
 |
yaseen
Liittynyt: 22 tammikuu 2006 Posts: 9 Auttanut: 1
| 27 elokuu 2006 9:33 Re: Tehtävä Osoittimet C | | |
|
| Olen currenlty käyttänyt funktio-osoittimia minun C-projekti, joka on valikkopalkki ajaa editorissa. Tarkoituksena theses viitteet on kirjoittaa tehokas, pienikokoinen ja nopea koodi. Oma koodi saple on täällä;
int arvo [] = (0x1F00, / / Alt S (^ Setup) 0x1400, / / Alt T (^ Matka-arkut) 0x1200, / / Alt E (^ Extensions) 0x1800, / / Alt O (^ Operator) 0x2600, / / Alt L (^ Logging) 0x1900, / / Alt P (^ salasanat) 0x2200, / / Alt G (Settin ^ gs) 0x2300 / / Alt H (^ Ohje) );
/ / ------ Osoittimet toimintoja --------------------------------- void (* Execute [8 ])();// Päävalikko toiminnot void (* Setup [3 ])();// Valikko Alamomentti toiminnot void (* Matka-arkut [9 ])(); void (* Extensions [4 ])(); void (* Operaattorin [3 ])(); void (* Logging [2 ])(); void (* Salasanat [3 ])(); void (* Asetukset [6 ])(); void (* Ohje [10 ])(); //------------------------------------------------ ---------------
main () ( .... / / Alusta funtion viitteet Execute [0] = ProcessSetup; Execute [1] = ProcessTrunks; Execute [2] = ProcessExtensions; Execute [3] = ProcessOperator; Execute [4] = ProcessLogging; Execute [5] = ProcessPasswords; Execute [6] = ProcessSettings; Execute [7] = ProcessHelp; ......
/ / Lue näppäimistö ... i = bioskey (1); jos (i) / / Jos näppäimistö valmis ... key = bioskey (0); muuten jatkaa; / / Jos näppäimistö ei ole valmis jatka katsomista
/ / Execute valikosta valitaan käyttäjä for (j = 0, j <8, j ) ( if (avain == arvo [j]) ( if (! inProcess) ( inProcess = 1; Execute [j] (); ) ) else if (avain == 0x2D00) / / Alt X painetaan ... eli Lopeta return; ) .......... |
|
| Palaa alkuun | |
 |