www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik inline und extern.von ulis mmc.h


Autor: roboterheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
diese ausdrücke befinden sich unter anderem in der mmc.h von uli.
was bedeutet diese "inline und extern"?

inline void mmc_write_byte(U08);
extern void mmc_read_block(U08 *,U08 *,U16);

mfg

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
roboterheld wrote:
> diese ausdrücke befinden sich unter anderem in der mmc.h von uli.
> was bedeutet diese "inline und extern"?
>
> inline void mmc_write_byte(U08);
> extern void mmc_read_block(U08 *,U08 *,U16);
>
> mfg

Das inline ist so etwas deplaziert, es sei denn in weiterer
Folge wird in diesem File noch die Implementierung dieser
Funktion angeführt.

Inline bedeutet, dass der Compiler den tatsächlichen Funktions-
aufruf durch den Inhalt der Funktion ersetzten soll.

Bsp:
inline int add( int a, int b )
{
  return a + b;
}

int main()
{
  int c;

  c = add( 4, 5 );
}

Durch das inline wird der Compiler angehalten, anstelle des
Funtionsaufrufes die tatsächliche Funktion einzusetzen.
In diesem Fall ist das gleichwertig wie wenn man geschrieben
hätte

int main()
{
  int c;

  c = 4 + 5;
}

Man beachte:
Damit der Compiler inlinen kann, muss er natürlich den Funktions-
inhalt kennen. Wenn da nur stehen würde
inline int add( int a, int b );

int main()
{
  int c;

  c = add( 4, 5 );
}

dann wird sich der Compiler mit dem inlinen schwer tun :-)

Zum extern:
Der ist an dieser Stelle ziemlich unnötig und kennzeichnet lediglich,
dass diese Funktion an einer anderen Stelle implementiert ist,
das es sich hier also nicht um eine Definition einer Funktion
sondern um eine Deklaration handelt. Der Compiler kann aber bei
Funktionen auch so erkennen, dass es sich um eine Deklaration
(einen sog. Protoypen) handelt und benötigt das extern nicht
explizit. Es schadet allerdings auch nichts.

Autor: Sphinx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Inline bedeutet meiner Meinung nach, dass der Funktionsaufruf durch den 
Code der Funktion ersetzt wird. Das soll die Zeit für den Branch etc. 
sparen.
Manche Compiler ignorieren dieses Schlüsselwort jedoch!

Extern sagt dem Compiler, dass die Funtkion in einer anderen C Datei 
implementiert wurde.

Schönen Gruss!

Autor: roboterheld (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jup,danke.

mfg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.