Ich habe eine Funktion, die auf Daten arbeitet (sagen wir mal, ein int
), und ich möchte es an Ort und Stelle ändern, indem Sie einen Verweis auf den Wert übergeben. Als solche habe ich die Funktion: void myFunction(int *thing) { ... }
. Wenn ich es benutze, nenne ich es so: myFunction(&anInt)
.Wird GCC inline eine Funktion, die einen Zeiger nimmt?
Da meine Funktion häufig aufgerufen wird (aber von vielen verschiedenen Orten), mache ich mir Sorgen um ihre Leistung. Der Grund, warum ich es in eine Funktion umstrukturiert habe, ist Testbarkeit und Wiederverwendung von Code.
Wird der Compiler in der Lage sein, die Funktion zu optimieren, so dass er direkt auf meine anInt
Variable einwirkt?
Ich hoffe, Sie werden diese Frage in dem Geist, in dem es gefragt wird, nehmen (d. H. Ich bin nicht vorzeitig Sorgen um Optimierung, ich bin neugierig auf die Antwort). Ebenso möchte ich es nicht zu einem Makro machen.
Zumindest mit GCC 4.4.2 muss es nicht einmal inline markiert werden! (Mit 'static' wird jedoch eine zusätzliche Kopie der Funktion in der generierten Binärdatei vermieden.) – ephemient