Warum lässt gcc zu, dass Argumente an eine Funktion ohne Argumente übergeben werden?

Ich verstehe nicht, warum dieser Code kompiliert?

#include <stdio.h>
void foo() {
    printf("Hello\n");
}

int main() {
    const char *str = "bar";
    foo(str);
    return 0;
}

gcc warnt nicht einmal davor, dass ich foo () zu viele Argumente übergebe. Ist das erwartetes Verhalten?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage