Я пишу игрушечный компилятор C для компилятора / языкового курса в моем университете.
Я пытаюсь конкретизировать семантику для разрешения символов в C, и придумал этот тестовый пример, который я пробовал против обычных компиляторов clang & gcc.
void foo() { }
int main() { foo(5); } // foo has extraneous arguments
Большинство компиляторов, кажется, предупреждают только о посторонних аргументах.
Вопрос: Какова основная причина этого?
На этапе создания / разрешения моей таблицы символов я рассматривал функцию как символ с возвращаемым типом и несколькими параметризованными аргументами (на основе грамматики), каждый с соответствующим типом.
Спасибо.