| Auteur | Bericht |
|---|
cherry
Lid geworden: 19 juli 2005 Posten: 3
| 25 augustus 2005 7:01 Function Pointers in C | | |
|
| Wanneer en in welke situaties kunnen wij gebruik van de C-functie pointers in Embedded?
Kan iemand uitleggen?
Bedankt ..... Cherry |
|
| Terug naar boven | |
 |
IanP
Lid geworden: 05 oktober 2004 Berichten: 6454 Geholpen: 1535 Locatie: West Coast
| 25 augustus 2005 7:24 Re: Functie Pointers in C | | |
|
| | Citaat: | | Pointers naar functies zijn niet zo algemeen als de andere aanwijzer gebruikt. Echter, een algemeen gebruik is in een passerende pointers naar een functie als parameter in een functie-oproep. | http://www.cs.cf.ac.uk/Dave/C/node12.html Groeten, IanP |
|
| Terug naar boven | |
 |
echo47
Lid geworden: 07 april 2002 Berichten: 4206 Geholpen: 566
| 25 augustus 2005 8:13 Function Pointers in C | | |
|
| | Een andere veel voorkomende toepassing is een callback functie. Bijvoorbeeld, u wilt dat Windows om uw audio recorder functie telkens Windows ontvangt enkele monsters van de microfoon. Je geeft Windows een pointer naar uw audio recorder functie. |
|
| Terug naar boven | |
 |
schaakmat
Lid geworden: 26 februari 2004 Posts: 489 Geholpen: 35 Locatie: Toilet Seat
| 25 augustus 2005 13:23 Re: Functie Pointers in C | | |
|
| Functie pointers worden niet vaak gebruikt in embedded C, meer voor de PC zijde programmering. Kortom, het is een pointer naar een functie en afhankelijk van welke functie de aanwijzer punten, kunt u de uitvoering van verschillende functies kunnen worden uitgevoerd in dezelfde regel code.
Een voorbeeld van het gebruik ervan is dat je een array van functie pointers, die wijst op bericht behandelaars, elk van een ander type bericht dat is ontworpen om dezelfde index als het bericht handler.
Dus je kunt bellen als er iets | Code: | fnPtr [msg-> type] (msg);
| [/ code]
Toegevoegd: Een mogelijk gebruik van de functie pointers in embedded C, is een taak scheduler. |
|
| Terug naar boven | |
 |
Google AdSense

| 25 augustus 2005 13:23 advertenties | | |
|
|
|
|
| Terug naar boven | |
 |
njfane
Lid geworden: 27 oktober 2004 Posts: 15
| 26 augustus 2005 11:00 Re: Functie Pointers in C | | |
|
| het is een goede keuze te vervangen switch geval in een state machine met behulp van functie-pointer, in het geval dat state machine heeft te veel switch gevallen. maakt het programma compacter. |
|
| Terug naar boven | |
 |
Bingo600
Lid geworden: 26 augustus 2004 Posts: 239 Geholpen: 14
| 27 augustus 2005 14:35 Function Pointers in C | | |
|
| Dit is een mooi document over het onderwerp
http://www.newty.de/fpt/zip/e_fpt.pdf
http://www.newty.de/fpt/index.html
/ Bingo |
|
| Terug naar boven | |
 |
btbass
Lid geworden: 20 juli 2001 Posts: 1138 Geholpen: 106 Locatie: Oberon
| 10 Sep 2005 15:21 Re: Functie Pointers in C | | |
|
| Functie pointers zijn zeer nuttig in embedded systemen. Net als een gestroomlijnde switch statement. Ook zeer nuttig in het menu systemen. Wanneer de geselecteerde menu-item is de index van een functon aanwijzer array.
Bijvoorbeeld, elke functie staat hier geeft het volgende staat om te schakelen is. De controlerende code voor een heel programma in een lijn!
| Code: | /*--- State machine functies. ---*/
UI_16 standby (void); UI_16 beginnen (void); UI_16 draait (void);
/*--- State Machine. ---*/
enum (STANDBY = 0, UITGANGSSTOFFEN, RUNNING);
/************************************************* ******************** * Functie Naam: main * Beschrijving: Programma toegangspunt. Array initialiseren van constante functie pointers. Initialiseren state machine naar stand-by. Execute state machine.
************************************************** *******************/
SI_16 main (void) ( UI_16 (* const Motor_State []) (void) (= stand-by, te beginnen, draait); UI_16 State = STANDBY;
voor (;;){ Staat = Motor_State [staat] (); / * oproep staat functie * / ) )
/*--- Einde van bestand. ---*/
|
|
|
| Terug naar boven | |
 |
raj_rohit10
Lid geworden: 14 juli 2004 Posts: 113 Geholpen: 1
| 13 Sep 2005 7:19 Re: Functie Pointers in C | | |
|
| hallo optimaal gebruik van de functie pointer wat ik voel is de implimentation van de FSM en als het wordt verteld erlier 2e is een call-back-functie. |
|
| Terug naar boven | |
 |
abhishek_elec
Lid geworden: 09 Sep 2005 Posts: 15 Geholpen: 1 Locatie: India
| 13 Sep 2005 12:42 Re: Functie Pointers in C | | |
|
| Functie pointers zijn handig wanneer u een algemene procedure of algo en u gebruik wilt maken van deze procedure op de verschillende soorten gegevens.
Voor ex. Indien u over een goede sortering algo, en u wilt gebruiken op dezelfde algo nummers, alfabetisch, strijkers of alle gegevens die door sommige sortering regel. In dat geval, u moet gewoon een andere "vergelijken" functie voor elk type en de gegevens in de belangrijkste sortering algo, u passeert de functie pointer als argument. Op deze manier kan dezelfde algo kan worden gebruikt door verschillende ppl afhankelijk van hun behoefte. Geen enkele wijziging nodig is in het hoofddeel van algo. |
|
| Terug naar boven | |
 |
yaseen
Lid geworden: 22 januari 2006 Posten: 9 Geholpen: 1
| 27 augustus 2006 9:33 Re: Functie Pointers in C | | |
|
| Ik heb currenlty gebruikt de functie pointers in mijn C-project, dat is het menu gestuurde editor. Het doel van deze aanwijzingen is het schrijven van een efficiënte, compacte en snelle code. Mijn code saple is hier;
Prijs int [] = (0x1F00 / / Alt S (^ Setup) 0x1400, / / Alt T (^ Hutkoffers) 0x1200, / / Alt E (^ Extensions) 0x1800, / / Alt O (^ Operator) 0x2600, / / Alt L (^ Logboekregistratie) 0x1900, / / Alt P (^ Wachtwoorden) 0x2200, / / Alt G (Settin ^ gs) 0x2300 / / Alt H (^ Help) );
/ / ------ Pointers naar functies --------------------------------- void (* Execute [8 ])();// Main Menu functies void (* Setup [3 ])();// Menu Item functies void (* Hutkoffers [9 ])(); void (* Extensions [4 ])(); void (* Operator [3 ])(); void (* Logging [2 ])(); void (* Wachtwoorden [3 ])(); void (* Instellingen [6 ])(); void (* Help [10 ])(); //------------------------------------------------ ---------------
main () ( .... / / Initialiseer functies pointers Uitvoeren [0] = ProcessSetup; Voeren [1] = ProcessTrunks; Execute [2] = ProcessExtensions; Voeren [3] = ProcessOperator; Voeren [4] = ProcessLogging; Voeren [5] = ProcessPasswords; Voeren [6] = ProcessSettings; Voeren [7] = ProcessHelp; ......
/ / Lees het toetsenbord ... i = bioskey (1); if (i) / / Als toetsenbord klaar ... key = bioskey (0); anders blijven; / / Als het toetsenbord niet klaar dan verder kijken
/ / Voer het menu geselecteerd door de gebruiker for (j = 0; j <8; j ) ( if (key == Prijs [j]) ( if (! inProcess) ( inProcess = 1; Execute [J] (); ) ) else if (key == 0x2D00) / / Alt X ingedrukt ... dwz Quit terugkeer; ) .......... |
|
| Terug naar boven | |
 |