¿En qué situación es posible que GCC no arroje un mensaje de error de enlace de "referencia no definida" cuando intenta llamar a funciones inventadas?¿Puede GCC no quejarse de referencias indefinidas?
Por ejemplo, una situación en la que se compila el código C y vinculado por GCC:
void function()
{
made_up_function_name();
return;
}
... a pesar de que made_up_function_name
no está presente en cualquier parte en el código (no encabezados, archivos de origen, declaraciones, ni ninguna biblioteca de terceros).
¿Puede ese tipo de código ser aceptado y compilado por GCC bajo ciertas condiciones, sin tocar el código real? Si es así, ¿cuál?
Gracias.
EDITAR: ninguna declaración anterior o menciones a made_up_function_name
están presentes en ningún otro lado. Lo que significa que un grep -R
de todo el sistema de archivos será y solo mostrará esa única línea de código exacta.
Puede (siempre que compile C, no C++). ¿Qué estás tratando de lograr sin embargo? –
No estoy tratando de lograr nada, ya está sucediendo y me gustaría saber por qué es posible. El made_up_function_name está realmente presente en el binario final, vinculado, si uso "-g" y edito el archivo con un editor de texto. – STenyaK
En cuanto a por qué, consulte: http://stackoverflow.com/questions/4914589/c-prototype-functions/4914683, http://stackoverflow.com/questions/4800102/not-including-stdlib-h-does-not -produce-any-compiler-error/4800138 # 4800138, y probablemente bastantes más. –