Was bedeuten die Klammern um eine Funktion name?

In einem meiner Projekt-Quelldateien, fand ich diese C-Funktion definition:

int (foo) (int *bar)
{
    return foo (bar);
}

Hinweis: es ist kein Sternchen neben foo, so dass es nicht einen Funktionszeiger. Oder ist es?
Was ist hier Los mit den rekursiven Aufruf?

Nein, es ist nicht eine Funktion Zeiger - es ist noch eine reguläre Funktion namens foo.
Dies ist die komplette Funktion ?
haben Sie Beweise, dass diese Funktion verwendet wird, in einen nützlichen Zusammenhang?
...sieht aus wie eine dummy-Funktion, die vielleicht nur geschrieben, um zu sehen, ob es kompiliert, in vorhandene Quelle, und sollte entfernt wurde. Ich würde es entfernen (wenn es das ist, was die Funktion wirklich tut), da am besten wird es sein, Endlosschleife (ich bin mir nicht sicher, ob C-compiler darf optimieren, dass der Schwanz Aufruf springen), im schlimmsten Fall stack-überlauf.
Klammern in C-Deklarationen helfen, zu machen die Sprache mehrdeutig. Schnell, was ist a(b);? Erklärung der b als eine variable vom Typ a? Oder ein Aufruf der Funktion a mit dem argument b? Der Unterschied ist, syntaktischen und Sie nicht wissen, welche Möglichkeit, selbst zu analysieren, ohne sich die Erklärung info von a; D. H. das sind diejenigen, die postfix-Funktion aufrufen, Klammern oder Klammern optional um eine Feststellung.

InformationsquelleAutor user1859094 | 2012-11-28

Schreibe einen Kommentar