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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren