Frage

Ich bin verwirrt darüber, wie Inline-Funktionen in C ++ zu tun ....

lässt diese Funktion sagen. wie wäre es mit einer Inline-Funktion ausgeschaltet wird

int maximum( int x, int y, int z )
{
   int max = x;
   if ( y > max )
      max = y;
   if ( z > max )
      max = z;
   return max;
}   
War es hilfreich?

Lösung

Wie andere gesagt haben, können Sie das inline Schlüsselwort verwenden, den Compiler zu sagen, Sie möchten, dass Ihre Funktion inlined. Aber das inline Schlüsselwort ist nur ein Compiler Hinweis . Der Compiler kann und wird wählen Sie Ihre Anfrage zu ignorieren, wenn es will oder muss.

Eine Alternative ist Ihre Funktion eine Funktion Vorlage zu machen, die inline werden oft ausgeblasen:

template<class Val>
Val maximum( Val x, Val y, Val z )
{
   Val max = x;
   if ( y > max )
      max = y;
   if ( z > max )
      max = z;
   return max;
}   

Andere Tipps

Um es in eine Inline-Funktion zu aktivieren müssen Sie zwei Dinge tun:

  1. Deklarieren sie inline nach Stichwort inline verwenden.
  2. Stellen Sie sicher, dass die Definition von dieser Funktion in jeder Übersetzungseinheit sichtbar ist, wo es verwendet wird. Diese Regel bedeutet, dass Sie die gesamte Definition der Funktion in eine Header-Datei zu setzen haben.

Zur Post Neils Antwort als eine tatsächliche Antwort:

inline int maximum(int x, int y, int z)
....

Wenn die Funktionsdefinition in einer class {} Definition erscheint, dann ist es automatisch inline bereits.

Ansonsten, wie andere sagen, put inline infront.

Um die Funktion inline macht das Inline-Schlüsselwort verwenden:

inline int maximum( int x, int y, int z ) // note the inline keyword
{
   int max = x;
   if ( y > max )
      max = y;
   if ( z > max )
      max = z;
   return max;
}

Wenn die Funktion ist ein Mitglied einer Klasse / Struktur dann einfach es innerhalb der Klasse zu definieren (im Gegensatz zu außerhalb apposed) macht es inline.

Sagen haben Sie den Anruf:

int f = maximum(3, 4, 5)

Der Compiler könnte erweitert den Aufruf zu so etwas wie:

int max = x;
if ( y > max )
   max = y;
if ( z > max )
   max = z;
int z = max;

Es gibt einige Overhead Aufruf einer Funktion, so Inline-Funktionen geben Ihnen den Komfort-Funktionen zusammen mit der Leistung von C-Makros. Aber das ist nicht zu sagen, dass Sie immer sie verwenden sollten, in den meisten Fällen der Compiler bei der Entscheidung besser ist, wenn Optimierungen wie dies erforderlich sind, und vielleicht nicht einmal Ihren Antrag.

Sie können mehr über Inline-Funktionen lesen und wie (und wann) zu verwenden, um sie unter C ++ FAQ Lite und diese GOTW

inline sagt nur den Compiler, dass Sie den Funktionscode kopiert werden sollen überall es refernece ist, es den Code macht ein bisschen schneller (kein Funktionsaufruf Overhead), aber größer (der Code kopiert). Diese Seite gibt es mehr in die Tiefe.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top