2012-06-24 14 views
8

ich studiert habe, dassTiefe von inlining in GCC Compiler

Der Inline-Spezifizierer ein Hinweis an den Compiler, die es versuchen sollte Code [...] inline zu erzeugen, anstatt den Code für die Festlegung Funktion einmal und dann Aufruf über die üblichen Funktionsaufruf Mechanismus. Fragen

:

  1. Wenn Optimierung für die GCC-Compiler ausgeschaltet wird, wird der Inline-Spezifizierer ignoriert?
  2. Wenn Inline-Funktionen rekursiv aufgerufen werden, welche Compiler-Option bestimmt die 'Inline-Tiefe', bis sie dem normalen Funktionsaufrufmechanismus folgt?
  3. Wenn die Inline-Funktion innerhalb einer for-Schleife aufgerufen wird, kommt die gleiche Inline-Tiefe zum Tragen?

Antwort

7

Wenn Optimierung für die GCC-Compiler ausgeschaltet, ist der Inline-Spezifizierer ignoriert?

Ja, wenn die Optimierung in GCC deaktiviert ist, sind keine Funktionen inline. Dies entspricht der Verwendung des Flags -fno-inline während der Kompilierung. Sehen Sie diese link

-fno-inline

Don't pay attention to the inline keyword. Normally this option is used to keep the compiler from expanding any functions inline. Note that if you are not optimizing, no functions can be expanded inline.

Wenn Inline-Funktionen rekursiv aufgerufen werden, die Compiler-Option bestimmt die 'Tiefe des inlining', bis er folgt dem normalen Funktionsaufruf Mechanismus?

Optionen max-inline-recursive-depth und max-inline-recursive-depth-auto. Die Standardtiefe ist 8.

2

Neben -fno-inline müssen Sie auch -fno-default-inline verwenden, um Inline-Funktionen in Klassen zu deaktivieren. Dies ist nützlich, wenn Sie gdb verwenden, um in diese Inline-Funktionen zu gelangen.