¿Por qué esta obvia recursión infinita no da una advertencia al compilador? [cerrado

Muchos meses atrás, tuve que arreglar un código que causó algunos problemas. El código se veía básicamente así:

int badFun() { return badFun(); }

Esto obviamente causó un desbordamiento de la pila incluso en el lenguaje de alto nivel con el que estaba trabajando (4Test in SilkTest). No hay forma de que este código pueda verse como beneficioso. La primera señal de problemas fueron las advertencias vistas después de que finalizó el script, pero no hubo errores de compilación o advertencias. Curiosamente, intenté escribir programas en C ++, C # y Python con la misma estructura, y todos ellos se compilaron / interpretaron sin errores de sintaxis o advertencias, incluso a través de errores de tiempo de ejecución en todos los casos. Ni siquiera vi ninguna advertencia en ninguno de estos casos. ¿Por qué no se ve esto como un posible problema por defecto?

EDIT: intenté escribir el equivalente de esa función en los tres idiomas, así que agregué esas etiquetas de función. Estoy más interesado en las razones generales por las que un código como este pasa sin advertencias. Vuelva a etiquetar si es necesario.

Respuestas a la pregunta(14)

Su respuesta a la pregunta