2009-03-20 10 views
4

Heute bin ich auf verschachtelte Funktionen gestoßen, von denen ich noch nie gehört hatte. Ist es nur ein Teil von GNU C?Sind verschachtelte Funktionen Teil des C-Standards?

Hier ist ein Wikipedia-Beispiel für verschachtelte Funktion.

Aus dem Code sieht es aus wie verschachtelte Funktionen sind eine Art von C++ Inline-Funktionen. Also, ist es möglich, die Adresse der verschachtelten Funktion herauszunehmen?

Edit:

Der gcc Link von Adam gegeben, sagt, dass Code verschachtelte Funktion der dynamisch auf Stapel erstellt wird. Aber wie führt man Code vom Stapel aus? Sollte es nicht im Code-Segment sein.

Antwort

12

Nein, sie sind nicht Teil des C- oder C++ - Standards. Sie sind eine GNU-Erweiterung im GCC-Compiler. Weitere Informationen finden Sie unter GCC manual. Es ist tatsächlich möglich, die Adresse einer verschachtelten Funktion zu verwenden, was mit einer Technik gemacht wird, die trampolines genannt wird, aber hüte dich vor den Vorbehalten, die im Handbuch aufgelistet sind.

+0

Dank Adam. Das war eine gute Erklärung. – chappar

Verwandte Themen