Escribo C en Visual Studio 2010. El compilador no parece querer dejarme usar declaraciones de variables en línea. El siguiente código produce un error:Microsoft C Compiler: declaración de variable en línea?
unsigned int fibonacci_iterative(unsigned int n) {
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
unsigned int prev_prev = 0; // error
unsigned int prev = 1; // error
unsigned int next = 0; // error
for (int term_number = 0; term_number < n; term_number++) {
unsigned int temp = prev_prev + prev;
prev = next;
prev_prev = prev;
next = temp;
}
return next;
}
error:
error C2143: syntax error : missing ';' before 'type'
error C2143: syntax error : missing ';' before 'type'
error C2143: syntax error : missing ';' before 'type'
Por qué sucede esto? ¿Hay alguna configuración para hacer que el compilador no sea tan estricto?
Un poco complicado, ¿no? Todo el resto de la función que hace referencia a esas variables deberá estar dentro del bloque para que las variables no queden fuera del alcance. Si se usa en exceso, esto dará lugar a un código muy desordenado y repleto de llaves. –
@Chinmay: depende. Sí, podría terminar siendo desordenado para bloques grandes, pero también puede ser útil para bloques pequeños donde algunas variables solo necesitan un alcance muy limitado. – jamesdlin
¿Qué tan portátil es eso? Parece que podría estar buscando problemas. –