Почему gcc позволяет передавать аргументы функции, которая определена без аргументов?

Я нене понимаю, почему этот код компилируется?

#include 
void foo() {
    printf("Hello\n");
}

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

GCC не делаетя даже не выдаю предупреждение, что я передаю слишком много аргументов в foo (). Это ожидаемое поведение?

Ответы на вопрос(4)

Ваш ответ на вопрос