| Autor | Nachricht |
|---|
Kirsche
Beitritt: 19. Jul 2005 Beiträge: 3
| 25 Aug 2005 7:01 Funktion Zeiger in C | | |
|
| Wo und in welchen Situationen können wir Hinweise Funktion von C in Embedded?
Kann jemand erklären?
Dank ..... Cherry |
|
| Zurück zum Anfang | |
 |
IanP
Joined: 05 Oct 2004 Beiträge: 6454 Geholfen: 1535 Lage: West Coast
| 25 Aug 2005 7:24 Re: Function Pointer in C | | |
|
| | Zitat: | | Zeiger auf Funktionen sind nicht so häufig wie andere Zeiger verwendet. Jedoch eine gemeinsame Nutzung ist in der Weitergabe Zeiger auf eine Funktion als Parameter in einem Funktionsaufruf. | http://www.cs.cf.ac.uk/Dave/C/node12.html Grüße, IanP |
|
| Zurück zum Anfang | |
 |
echo47
Joined: 07 Apr 2002 Beiträge: 4206 Geholfen: 566
| 25 Aug 2005 8:13 Funktion Zeiger in C | | |
|
| | Ein weiteres gemeinsames Programm ist eine Callback-Funktion. Zum Beispiel, wenn Sie wollen, um Ihre Windows-Audio-Recorder-Funktion bei jedem Windows erhält einige Beispiele aus dem Mikrofon. Sie geben Windows ein Zeiger auf Ihre Audio-Recorder-Funktion. |
|
| Zurück zum Anfang | |
 |
Matt
Beitritt: 26. Feb 2004 Beiträge: 489 Geholfen: 35 Lage: WC-Sitz
| 25 Aug 2005 13:23 Re: Function Pointer in C | | |
|
| Funktionszeiger sind nicht häufig in Embedded C, mehr für die PC-Seite Programmierung. Im Grunde ist es ein Zeiger auf eine Funktion, und je nachdem, welche Funktion der Zeiger verweist, können Sie die verschiedenen Funktionen, die ausgeführt werden soll in der gleichen Zeile Code.
Ein Beispiel mit der Art und Weise ist es, dass Sie eine Reihe von Zeiger-Funktion, die auf Nachrichten-Handler, die jeweils eine andere Art, die Botschaft ist, den gleichen Index wie die Nachricht gesendet.
So können Sie so etwas wie | Code: | fnPtr [msg-> type] (msg);
| [/ code]
Hinzugefügt: Eine mögliche Anwendung der Funktionszeiger in Embedded C, ist ein taskscheduler. |
|
| Zurück zum Anfang | |
 |
Google AdSense

| 25 Aug 2005 13:23 Anzeigen | | |
|
|
|
|
| Zurück zum Anfang | |
 |
njfane
Joined: 27 Oct 2004 Beiträge: 15
| 26 Aug 2005 11:00 Re: Function Pointer in C | | |
|
| Es ist eine gute Wahl, um es zu ersetzen Schalter in einen Zustand Maschine mit der Funktion Zeiger, Für den Fall, dass staatliche Maschine hat zu viele Schalter Fällen. Es macht Programm kompakter. |
|
| Zurück zum Anfang | |
 |
Bingo600
Beitritt: 26. Aug 2004 Beiträge: 239 Geholfen: 14
| 27 Aug 2005 14:35 Funktionszeiger in C | | |
|
| Dies ist ein nettes Dokument zu diesem Thema
http://www.newty.de/fpt/zip/e_fpt.pdf
http://www.newty.de/fpt/index.html
/ Bingo |
|
| Zurück zum Anfang | |
 |
btbass
Beitritt: 20. Jul 2001 Beiträge: 1137 Geholfen: 106 Lage: Oberon
| 10 Sep 2005 15:21 Re: Function Pointer in C | | |
|
| Funktion Hinweise sind sehr nützlich, in eingebetteten Systemen. Wie ein gestrafft switch-Anweisung. Auch sehr nützlich, in dem Menü-Systeme. Wird der Menüpunkt ausgewählt ist der Index einer functon Zeiger Array.
Zum Beispiel, jeder Staat hier Funktion liefert den nächsten Stand, um. Die Controlling-Code für ein ganzes Programm in einer Zeile!
| Code: | /*--- State Machine Funktionen. ---*/
UI_16 Standby (void); UI_16 Start (void); UI_16 laufen (void);
/*--- State Machine. ---*/
enum (STANDBY = 0, STARTING, RUNNING);
/************************************************* ******************** * Funktion Name: main * Beschreibung: Programm Anlaufstelle. Initialisieren Reihe von konstanten Funktion Zeiger. Initialisieren Rechner in den Standby-Zustand. Ausführen Automaten.
************************************************** *******************/
SI_16 main (void) ( UI_16 (* const Motor_State []) (void) = (Standby-Modus starten, läuft); UI_16 State = STANDBY;
für (;;){ State = Motor_State [state] (); / * Aufruf Staat Funktion * / ) )
/*--- Ende der Datei. ---*/
|
|
|
| Zurück zum Anfang | |
 |
raj_rohit10
Beitritt: 14. Jul 2004 Beiträge: 113 Geholfen: 1
| 13 Sep 2005 7:19 Re: Function Pointer in C | | |
|
| hallo die bestmögliche Nutzung der Funktion Zeiger, was ich für die Implementierung der FSM und es wird erzählt erlier 2. ist ein Call-Back-Funktion. |
|
| Zurück zum Anfang | |
 |
abhishek_elec
Joined: 09 Sep 2005 Beiträge: 15 Geholfen: 1 Ort: Indien
| 13 Sep 2005 12:42 Re: Function Pointer in C | | |
|
| Funktion Hinweise sind nützlich, wenn u haben eine allgemeine oder algo und U verwenden wollen, dieses Verfahren auf verschiedene Arten von Daten.
Für die Ex-., Wenn u eine gute Sortierung algo, und u verwenden möchten gleichen Algorithmen auf Zahlen, alphabetisch, Streicher oder Daten, die von einigen Sortierung Regel. In diesem Fall, und muss einfach schreiben, eine andere "vergleichen"-Funktion für jeden Datentyp und in den wichtigsten Sortierung algo, u wird der Funktion-Zeiger als ein Argument. Auf diese Weise werden die gleichen Algorithmen verwendet werden können durch verschiedene PPL nach ihrer Notwendigkeit. Keine Änderung erforderlich ist, den Hauptteil der algo. |
|
| Zurück zum Anfang | |
 |
yaseen
Beitritt: 22. Jan 2006 Beiträge: 9 Geholfen: 1
| 27 Aug 2006 9:33 Re: Function Pointer in C | | |
|
| Ich habe currenlty verwendet die Funktion Hinweise in meiner C-Projekt, das ist die Menü-Editor. Der Zweck der Arbeiten ist es, Hinweise eines effizienten, kompakten und schnellen Code. Mein Code saple ist hier;
int value [] = (0x1F00, / / Alt S (^ Setup) 0x1400, / / Alt T (^ Trunks) 0x1200, / / Alt E (^ Extensions) 0x1800, / / Alt O (^ Operator) 0x2600, / / Alt L (^ Logging) 0x1900, / / Alt P (^ Passwörter) 0x2200, / / Alt G (Settin ^ gs) 0x2300 / / Alt H (^ Hilfe) );
/ / Zeiger auf Funktionen ------ --------------------------------- void (* Ausführen [8 ])();// Hauptmenü-Funktionen void (* Setup [3 ])();// Menüpunkt Funktionen void (* Trunks [9 ])(); void (* Erweiterungen [4 ])(); void (* Operator [3 ])(); void (* Protokollierung [2 ])(); void (* Passwörter [3 ])(); void (* Einstellungen [6 ])(); void (* Hilfe [10 ])(); //------------------------------------------------ ---------------
main () ( .... / / Initialize Funktion Zeiger Execute [0] = ProcessSetup; Execute [1] = ProcessTrunks; Ausführen [2] = ProcessExtensions; Ausführen [3] = ProcessOperator; Ausführen [4] = ProcessLogging; Ausführen [5] = ProcessPasswords; Führen Sie [6] = ProcessSettings; Führen Sie [7] = ProcessHelp; ......
/ / Lesen Sie die Tastatur ... i = bioskey (1); if (i) / / Wenn Tastatur bereit ... key = bioskey (0); sonst continue; / / Wenn Tastatur nicht weiter beobachten sie
/ / Führe das Menü vom Benutzer gewählten for (j = 0; j <8; j ) ( if (key == Wert [j]) ( if (! InProcess) ( InProcess = 1; Führen Sie [J] (); ) ) else if (key == 0x2D00) / / Alt X gedrückt ... also Beenden return; ) .......... |
|
| Zurück zum Anfang | |
 |