Frage

Nehmen wir an, ich habe zwei Inline-Funktionen in meinem Header-Datei:

inline int foo() { return bar()+2; }
inline int bar() { return 3; }

kann ich davon ausgehen, dass ein C99-Compiler „foo“ inline wird, auch wenn ‚bar‘ später erklärt wird? Unter der Annahme, dass keine andere internen Regeln wie Funktionskörper zu groß ausgelöst werden.

Sind Implementierungen von c-Compiler dies zu tun (populäreren sagen Intel-C / Sun Studio / MSVC und gcc), auch wenn C99 läßt dies als eine Option?

War es hilfreich?

Lösung

Solange die Funktionen richtig prototypisiert werden, es wird egal, in welcher Reihenfolge Sie erklären sie in.

Andere Tipps

inline ist nur ein Hinweis an den Compiler, und mehr als oft nicht es ist in der modernen optimierende Compiler ignoriert. Sie können nichts davon ausgehen, ob etwas inlined wird oder nicht. Einige Compiler bieten Pragmas, die eine bestimmte Funktion zwingen inlined werden, wenn es überhaupt möglich ist (z MSVC __forceinline) ist. Wenn Sie unbedingt wissen müssen, haben Sie bei der Demontage des Ausgangs suchen.

Wie gesagt, für einen bestimmten Code-Schnipsel, jeder anständige optimierenden Compiler, dass Inline würde, mit inline oder ohne, solange es sich um eine einzelne Header ist.

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