Für viele schnelle Aufgaben, bei denen eine Funktion verwendet werden kann f(x,y)
, werden in einfachem C Makros verwendet. Ich möchte speziell nach diesen Fällen fragen, die durch einen Funktionsaufruf lösbar sind (dh Makros, die für Inlining-Funktionen verwendet werden, nicht für die Code-Erweiterung von beliebigem Code).
Normalerweise sind C-Funktionen nicht inline, da sie möglicherweise mit anderen C-Dateien verknüpft sind. Statische C-Funktionen sind jedoch nur in der C-Datei sichtbar, in der sie definiert sind. Daher können sie von Compilern eingefügt werden. Ich habe gehört, dass viele Makros ersetzt werden sollten, indem sie in statische Funktionen umgewandelt werden, da dies sichereren Code erzeugt.
Gibt es Fälle, in denen dies keine gute Idee ist?
Nochmals: Nicht nach Code-Production-Makros mit ##-ähnlichen Konstrukten fragen, die überhaupt nicht als Funktion ausgedrückt werden können.
inline
Funktionen stellen nur sicher, dass es mehrmals in der Binärdatei definiert werden kann. Der Compiler kann entscheiden, ob es tatsächlich inline wird, um möglicherweise Platz zu sparen
inline
, hier geht es nicht um C ++.
inline
in C, zumindest seit C99. Eine schnelle Übersicht finden Sie in Wikipedia zu Inline-Funktionen .