Ich schreibe C in Visual Studio 2010. Der Compiler scheint nicht inline-Variablendeklarationen verwenden zu wollen. Der folgende Code erzeugt einen Fehler:Microsoft C Compiler: Inline-Variablendeklaration?
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;
}
Fehler:
error C2143: syntax error : missing ';' before 'type'
error C2143: syntax error : missing ';' before 'type'
error C2143: syntax error : missing ';' before 'type'
Warum ist das passiert? Gibt es eine Einstellung, um den Compiler nicht so streng zu machen?
Ein bisschen chaotisch, oder? Der gesamte Rest der Funktion, die auf diese Variablen verweist, muss sich innerhalb des Blocks befinden, damit die Variablen nicht außerhalb des Gültigkeitsbereichs liegen. Wenn es überstrapaziert wird, führt dies zu einem sehr unordentlichen und klammerlastigen Code. –
@Chinmay: Es kommt darauf an. Ja, es könnte enden, für große Blöcke unordentlich zu sein, aber es kann auch für kleine Blöcke nützlich sein, wo einige Variablen nur einen sehr begrenzten Bereich brauchen. – jamesdlin
Wie tragbar ist das? Das scheint so zu sein, als würde es nach Ärger fragen. –