2017-02-17 1 views
-7

Ich muss über den Unterschied zwischen intrinsischer, Inline- und externer Funktion in C/C++ - Programmierung wissen. Thnx für die Hilfe ^^Unterschied zwischen intrinsisch, inline, extern im eingebetteten System?

+5

Es gibt keine Sprache C/C++. –

+0

und um zu vervollständigen, was @ πάνταῥεῖ sagte, ist der Ausdruck 'C/C++' UB in C und C++. :) –

+1

@ πάνταῥεῖ Sie sagen, dass sich C und C++ in Bezug auf diese spezielle Frage unterscheiden? Wenn sie das nicht tun, sehe ich wirklich nicht die Notwendigkeit, für jede Sprache eine Frage zu haben. –

Antwort

2

Intrinsic Funktionen

sind Funktionen, die der Compiler direkt, wenn möglich implementiert stattdessen eine tatsächliche Funktion in einer Bibliothek aufrufen. Zum Beispiel können sie zur Optimierung oder zum Erreichen bestimmter Hardware-Funktionalität verwendet werden.

Für ARM existiert eine intrinsische Funktion (und viele andere), die "__nop()" genannt wird und eine einzige NOP (No Operation) Anweisung einfügt.

Auch die folgenden Links für weitere Informationen

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0205g/Ciabijcc.html

What are intrinsics?

https://en.wikipedia.org/wiki/Intrinsic_function

Externe Funktionen

Teilt dem Compiler, der etwas an anderer Stelle definiert ist, so es doesn t sich beschweren, dass sie undefiniert oder mehrfach definiert sind

Obwohl es fast nie notwendig ist, das Schlüsselwort extern zu verwenden, wenn eine Funktion in C oder C++ deklariert wird, da diese normalerweise standardmäßig verknüpft sind.

Auch die folgenden Links für weitere Informationen

Extern functions in C vs C++

http://www.cplusplus.com/forum/general/21368/

Inline-Funktionen

Inline-Funktionen ist eine Optimierungstechnik durch den Compiler verwendet, insbesondere die Ausführungszeit zu reduzieren . Wenn Sie beispielsweise eine kleine Funktion (nicht als Inline deklariert) mit einem Eingabeparameter haben, rufen Sie diese Funktion mehrmals auf. Der Prozessor wird (unter anderem)

  1. Speichern der Parameter
  2. Sprung zur Funktion
  3. Führen Sie die Funktion
  4. Speichere das Ergebnis (falls vorhanden)
  5. Sprung zurück zur vorherigen Position

Wenn stattdessen die Funktion inline war, würde sie die Aufrufanweisung durch den Funktionscode selbst ersetzen und dann kompilieren der Code.

Auch die folgenden Links für weitere Informationen

http://www.cplusplus.com/articles/2LywvCM9/

https://en.wikipedia.org/wiki/Inline_function

http://www.cprogramming.com/tutorial/lesson13.html

Es gibt mehrere Links auf der großen Suchmaschinen.

+2

Während Link-Only-Antworten verpönt sind, zeigt dieser mehr Aufwand als die Op! +1 –

+0

Thnx für Ihre Antwort, aber nicht verstehen, wie intrinsische Funktion zu verwenden? Können Sie mir bitte ein Exempel geben? – SES

+0

@Colin__s So funktioniert das nicht .... Zum Glück wurde die Antwort erweitert –

Verwandte Themen