我在Visual Studio 2010中编写C语言.编译器似乎不想让我使用内联变量声明.以下代码生成错误:
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; }
错误:
错误C2143:语法错误:缺少';' 在'类型'之前
错误C2143:语法错误:缺少';' 在'类型'之前
错误C2143:语法错误:缺少';' 在'类型'之前
为什么会这样?是否有设置使编译器不那么严格?
在C89中不允许在非声明之后放置声明,尽管在C++和C99中允许它(但MSVC仍然不支持C99).
在C89中,您可以通过使用嵌套块来实现类似的效果:
unsigned int fibonacci_iterative(unsigned int n) { if (...) { } { unsigned int prev_prev = 0; unsigned int prev = 1; unsigned int next = 0; ... } }