wo werden inline-Funktionen korrekt definiert?

Gast #2107106
Lesenswert?
• ▲
▼
Hallo zusammen,

ich möchte in meinem Code zwecks der Übersicht kleine inline-Funktionen, 
also solche, die der Compiler auflösen und in den Code einbauen darf 
(wie ein Präprozessor-Makro es machen würde), programmieren.
Nun hab ich sie wie jede Funktion in foo.h deklariert
( mit inline void function( void ); ) und in foo.c definiert
( mit inline void function( void ) {...} ).
Leider produzierte das Fehlermeldungen. Ich hab dann in der foo.h den 
prefix inline gelöscht woraufhin alles offensichtlich lief. Nun lese ich 
in
http://www.parashift.com/c++-faq-lite/inline-functions.html#faq-9.6
, vorausgesetzt ich vertehe es richtig, dass man die funktion wohl in 
foo.h definieren MUSS und in der foo.c taucht sie dann also nicht mehr 
auf.

Ist das richtig so? oder wie gehts korrekt?

Vielen Dank
MfG Martin
Gast #2107148
Lesenswert?
• ▲
▼
Marin H. schrieb:
> dass man die funktion wohl in
> foo.h definieren MUSS und in der foo.c taucht sie dann also nicht mehr
> auf.

Müssen muß man nicht. Das header-file wird ja nur an Stelle des 
#include-Befehls ins c-File einfgefügt, ergo kannst du die 
inline-Funktiona auch direkt ins c-file einfügen. Solange die Funktion 
nur in diesem einen C-File verwendet wird, ist das sogar die bessere 
Variante.

Willst du die Funktion in mehreren C-Files inline nutzen, muß der Code 
natürlich komplett ins header-File.

Wenn du, wie im Moment, die Funktion im header-File ohne inline 
deklarierts, und den Code im C-File mit inline ausführst, wird innerhalb 
dieses einen C-Files der Code ge-inlined. Zusätzlich wird die Funktion 
aber auch noch als normale Funktion angelegt, die dann aus anderen 
C-Files aufgerufen werden kann.

Oliver

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.