¿Por qué es legal en C?
Estoy escribiendo un compilador de juguete C para un curso de compilador / idioma en mi universidad.
Estoy tratando de desarrollar la semántica para la resolución de símbolos en C, y se me ocurrió este caso de prueba que probé contra compiladores regulares clang & gcc.
void foo() { }
int main() { foo(5); } // foo has extraneous arguments
a mayoría de los compiladores solo parecen advertir sobre argumentos extraños.
Pregunta: ¿Cuál es el razonamiento fundamental detrás de esto?
ara mi fase de generación / resolución de la tabla de símbolos, estaba considerando una función como un símbolo con un tipo de retorno y varios argumentos parametrizados (basados en la gramática), cada uno con un tipo respectivo.
Gracias