Inline Funktionsdeklaration warum und wann

Gast
Inlinefunktionen werden immer direkt, ohne Sprünge vom Comiler in den
Assembler/Maschinen Code geschrieben. Sie sollen dann eingestzt werden,
wenn es um zeitkritische Operationen geht.
Gast
Hallo Hubert,
danke für die schnelle Antwort, aber wann weiß ich ob meine Funktion
zeitkritisch ist oder nicht.
wenn ich jetzt erstmal die funktion ganz normal schreibe ohne inline
und nur feststelle es geht nichts wie soll ich dann auf die Idee kommen
halt ich muß ja inline verwenden.

Danke für eine Antwort und Gruß Volker
Gast
Du darfts nicht vergessen, das eine Inline-Funktion direkt geschrieben
wird, d.h. sie wird nicht kopiert, braucht also mehr Platz im
Programmspeicher.
Was zeitkritisch ist, mußt du von Fall zu Fall unterscheiden. Eine
Funktion die schnell etwas darstellen soll (Windows-like, z.B.
Draw-Funktionen) würde ich inline machen.
Wenn Du ein Programm neu schreibst brauchst Du zunächst keine Inlines.
Aber zwecks Optimierung sollte man sich schon Gedanken machen.
Mit viel Erfahrung wählst du dann inline oder nicht inline.
Und programmierung ist halt viel Erfahrung.
Gast
Ich habe gerade das Problem, dass das Prog ohne inline nicht richtig
abläuft, also er (der Controller) aus manchen Funktionen nichtmehr
"rauskommt". Wenn ich jede Fkt. inline deklariere, funktioniert es
zwar, aber dann ist der Speicher viel zu schnell voll. Was kann ich da
machen?
Gast
Du hast vollkommen recht, was auch immer "crossposts" sind. Das Post
auf Roboternetz.de war auch von mir. Habe halt das gute alte
Breitschwert ausgepackt ohne hinterher zu wissen, wo ich zugeschlagen
habe. Woher kann ich denn auch wissen, dass alles so stark miteinander
verwoben ist, dass es hier Leute gibt, die verschiedene Foren (und die
Posts darin) miteinander vergleichen und aufeinander abstimmen.

Aber ja, das Problem ist gelöst: ich hab falsch compiliert. Nämlich
statt für den verbauten ATmega8 für den ATmega32.
Gast
Hi

nur um das ursprüngliche Thema nochmal aufzugreifen:
Inline sollte man nicht grundsätzlich bei zeitkritischen Funktionen
eingesetzt werden. Inline-Funktionen sind eher da geeignet wo das
Verhältnis aus Funktionsaufruf und eigentlichem Funktionsrumpf schlecht
ist. Typisches Beispiel sind getter/setter-Methoden einer Klasse. Dort
benötigt der Funktionsaufruf soviel mehr Laufzeit als die eigentliche
Funktion das sich der Aufruf einfach nicht lohnt.

Eine Draw-Methode würde ich grade nicht inline machen da sie reichlich
komplex seion dürfte was den Code aufbläht und an der Laufzeit fast
nichts ändert da der eigentliche Rumpf ein Vielfaches der Laufzeit des
Aufrufes benötigt.

Matthias

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.