inline void mmc_write_byte (U08 Byte) was heisst das linine in winavr-c. mfg karlheinz
das ist eigentlich wie ein macro... dh. wenn du mmc_write_byt(xy) aufrufst, springt das programm nicht zu der Funktion, sondern der quellcode der fuktion wird an dieser stelle eingefügt... das programm wird meist dadurch länger (codegrösse) aber schneller (meistens zumindest)...
Hi das ist nicht zwingend. Der C-Standard schreibt dazu: A function declared with an inline function specifier is an inline function. The function specifier may appear more than once; the behavior is the same as if it appeared only once. Making a function an inline function suggests that calls to the function be as fast as possible. The extent to which such suggestions are effective is implementation-defined. Matthias
@matthias: :-) danke, das stimmt... im grossen und ganzen nur ein wunsch an den compiler diesen teil zu beschleunigen :-) winavr-c ist jedoch der gcc somit habe ich den schritt in die spec des gcc gewagt, und da steht: By declaring a function inline, you can direct GCC to integrate that function's code into the code for its callers. This makes execution faster by eliminating the function-call overhead;
Ich habe mir gerade (relativ komplexe) Beispiel-Software für einen ATmega angeschaut (von Atmel selbst) und mich gewundert, dass die kein einziges inline verwenden. Macht das der Compiler selbst? Ich meine, Initialisierungsfunktionen etc. werden ja meist nur einmal ausgeführt und werden ja nur der Übersichtlichkeit halber vom Hauptprogramm getrennt, oder? Grüße Christian
Grade bei Initialisierungsfunktionen macht inline meist relativ wenig Sinn. Durch inline moechte man ja den call- overhead einsparen. Wird eine Funktion nur einmal aufgerufen, dann ist dieser Overhead auch kein wirkliches Problem, da er ja nur einmal auftritt.
Unnötig ist er trotzdem. Der GCC inlinet als "static" deklarierte Funktionen bei -Os durchaus selbstständig. Ist nicht jedermann's Sache, da das im Debugger natürlich lustig aussieht, wenn man im Einzelschritt durchgeht. "step out" funktioniert dann meist auch nicht mehr so, wie man sich das vorstellt...
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.