Den Unterschied zwischen f () und f (void) in C und C ++ ein für allemal verstehen

Ok, also ich habe gehört, verschiedene Meinungen zu diesem Thema und wollen einfach nur sicherstellen, dass ich es richtig verstehe.

Für C++

Erklärungen void f(); und void f(void); bedeuten genau das gleiche, die Funktion f keine Parameter. Das gleiche gilt für Definitionen.

Für C

Erklärung void f(void); bedeutet, dass f keine Parameter.

Erklärung void f(); bedeutet, dass die Funktion f möglicherweise oder möglicherweise nicht über Parameter, und wenn es das tut, wissen wir nicht, welche Parameter das sind, oder wie viele es von Ihnen ist. Beachten Sie, dass es ist NICHT das gleiche wie Ellipse, wir können nicht va_list.

Nun, hier ist, wo die Dinge interessant.

Fall 1

Erklärung:

void f();

Definition:

void f(int a, int b, float c)
{
   //...
}

Fall 2

Erklärung:

void f();

Definition:

void f()
{
   //...
}

Frage:

Was geschieht bei der Kompilierung in den Fällen 1 und 2, wenn wir rufen f mit den richtigen Argumenten, falschen Argumente und nicht-Argumente? Was geschieht zur Laufzeit?

Zusätzliche Frage:

Wenn ich erkläre f mit Argumenten, sondern definieren es ohne Sie, wird es einen Unterschied machen? Sollte ich in der Lage, die Argumente von der Funktion Körper?

InformationsquelleAutor der Frage | 2012-11-10

Schreibe einen Kommentar