inline und extern.von ulis mmc.h

#688110
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:
1
inline int add( int a, int b )
2
{
3
  return a + b;
4
}
5

6
int main()
7
{
8
  int c;
9

10
  c = add( 4, 5 );
11
}

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
1
int main()
2
{
3
  int c;
4

5
  c = 4 + 5;
6
}

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

3
int main()
4
{
5
  int c;
6

7
  c = add( 4, 5 );
8
}

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.
Gast #688114
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!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 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.