不能在DevC ++中的语句之后声明变量

时间:2009-01-07 12:18:01

标签: c variables declaration

这里的问题是,在函数中已经有一些语句后,我无法在函数内声明变量。在开始时声明工作正常,但在某些事情之后,它会给出一个解析错误。例如:

int main()
{
 int b;
 b = sisesta();
 float st[b];

 return 0;
}

我想声明一个数组st,其大小由另一个函数返回,但它不会让我这样做!说“浮动前解析错误”。顺便说一句,这是在C中,但我猜它与其他语言中的语法相同。

任何帮助表示感谢。

5 个答案:

答案 0 :(得分:6)

在C99之前的C标准中,您必须在函数的开头声明局部变量。从C99开始,不再需要这样做。

由于Dev-C ++附带gcc且最近的gcc版本部分支持C99,您可以尝试将-std=c99添加到Dev-C ++设置中的gcc参数列表以触发C99模式。

答案 1 :(得分:2)

C中的Dude你必须在开始时声明所有变量。你不能在陈述之间声明

答案 2 :(得分:0)

你可以malloc() float*达到你想要的尺寸(之后记得free()):

int main()
{
 int b;
 float *st;

 b = sisesta();

 if((st = malloc(sizeof float * b)) == NULL){exit 1;}

 /* blah blah */

 free(st);
 return 0;
}

答案 3 :(得分:0)

事实证明,我刚刚使用旧版本的DevC ++并不支持更新的标准,最新版本的声明工作正常,感谢您的帮助。

答案 4 :(得分:0)

即使在C89中,在函数开头执行所有声明只是一种风格选择 - 您在代码中遇到的麻烦是您试图在未知大小的堆栈上声明一个数组,并且直到C99才被允许。如果您要执行相同的代码,但将“float st [b]”替换为“b”为常量的语句,它将起作用,如“float st [10]”