I’m writing C in Visual Studio 2010. The compiler doesn’t seem to want to let me use inline variable declarations. The following code produces an error:
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’
Why is this happening? Is there a setting to make the compiler not so strict?
Putting declarations after non-declarations isn’t allowed in C89, although it is allowed in C++ and in C99 (MSVC still doesn’t support C99, though).
In C89, you can achieve a similar effect by using a nested block: