当前位置:  开发笔记 > 编程语言 > 正文

Microsoft C编译器:内联变量声明?

如何解决《MicrosoftC编译器:内联变量声明?》经验,为你挑选了1个好方法。

我在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:语法错误:缺少';' 在'类型'之前

为什么会这样?是否有设置使编译器不那么严格?



1> jamesdlin..:

在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;
       ...
    }
 }


虽然有点乱,不是吗?引用这些变量的所有其余函数都必须在块内,以便变量不会超出范围.如果过度使用,这将导致_very_混乱和大括号的代码.
推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有