Si una función tiene un tipo de devolución que no sea void
, y la función no devuelve nada, entonces supongo que el compilador devuelve un valor basura (posiblemente visto como un valor no inicializado). Sucede en el momento de la compilación, entonces ¿por qué no lanzar un error?Si una función no devuelve ningún valor, con un tipo de devolución válido, ¿está bien que el compilador tire basura?
Por ejemplo,
int func1() {
return; // error
}
int func2() {
// does not return anything
}
El segundo func2
debería producir un error, pero no es así. ¿Hay alguna razón para ello? Mi pensamiento era tal que, se puede ver como un valor no inicializado, por lo que si tenemos que tirar un error en el segundo caso, entonces tenemos que tirar de error, si un valor es inicializado, por ejemplo
int i; // error
int i = 6; // okay
Cualquier pensamientos, o esta es una pregunta duplicada? Aprecio tu ayuda.
¿Es C o C++? ¿Obtiene errores o advertencias del compilador? ¿Qué compilador estás usando? – littleadv
Sube tus advertencias. –
posible duplicado de [opciones gcc: advertencia sobre funciones no vacías sin una declaración de retorno] (http://stackoverflow.com/questions/9924570/gcc-options-warning-on-non-void-functions-without-a- return-statement) –