Inline-Funktion in anderen Übersetzungseinheiten erzwingen

8

Dieser Teil des gcc-Handbuchs ist ziemlich unklar und ich kann die Verwendung des forceinline-Attributs nach wiederholten Versuchen nicht verstehen.

Ich definiere ein Objekt und bestimmte Funktionen, um dieses Objekt zu manipulieren. Nur wenige dieser Funktionen können atomare Anweisungen verwenden, und ich möchte, dass der Compiler diese Funktionen verknüpft. Allerdings möchte ich diese Funktionen nicht in die Header-Datei schreiben und sie mit "static inline" wie im Linux-Kernel deklarieren.

Gibt es eine Möglichkeit, gcc zu Inline-Funktionen von einer anderen Übersetzungseinheit zu zwingen?

    
sgupta 05.11.2012, 08:23
quelle

1 Antwort

9

Sie können das Attribut always_inline verwenden, zum Beispiel:

%Vor%

Aus den Dokumenten

  

immer_inline       Im Allgemeinen werden Funktionen nur dann inline, wenn eine Optimierung angegeben ist. Bei Funktionen, die inline deklariert sind, wird das Attribut inline eingefügt   Funktion, auch wenn keine Optimierungsebene angegeben wurde.

Hinweis1 : inline muss nicht verwendet werden, wenn Sie das Attribut always_inline verwenden

Note2 : Wenn die Funktion nicht inline sein konnte, erhalten Sie eine Warnung, wenn zum Beispiel die Definition beim Kompilieren nicht verfügbar ist, gcc jedoch bei einer höheren Optimierung immer noch in den Aufrufer eingebunden werden kann Auch dafür gibt es einen speziellen Schalter:

%Vor%

Von den Dokumenten :

  

Optimierungsstufen - insbesondere -O2 und höher   Einheit-zu-Zeit-Modus, der es dem Compiler ermöglicht, Informationen zu berücksichtigen   gewonnen aus späteren Funktionen in der Datei beim Kompilieren einer Funktion .   Kompilieren mehrerer Dateien gleichzeitig zu einer einzigen Ausgabedatei in   Einheit-zu-Zeit-Modus ermöglicht dem Compiler die Verwendung von Informationen aus   alle Dateien beim Kompilieren jedes von ihnen .

Anmerkung3 : Es ist nicht notwendig, einen expliziten Prototyp zu haben, damit Sie das Attribut für die Funktionsdefinition verwenden können:

%Vor%

Siehe auch diese Diskussion , die einige Ihrer Fragen beantwortet.

    
iabdalkader 05.11.2012, 08:25
quelle

Tags und Links