Por que isso é legal em C?
stou escrevendo um compilador C de brinquedo para um curso de compilador / idioma na minha universidad
Estou tentando detalhar a semântica para a resolução de símbolos em C e criei este caso de teste que eu tentei contra os compiladores regulares clang & gcc.
void foo() { }
int main() { foo(5); } // foo has extraneous arguments
maioria dos compiladores parece avisar sobre argumentos estranho
Pergunta: Qual é o raciocínio fundamental por trás disso?
Para minha fase de geração / resolução da tabela de símbolos, eu estava considerando uma função como um símbolo com um tipo de retorno e vários argumentos parametrizados (baseados na gramática), cada um com um tipo respectiv
Obrigado