重新定义' i'错误

时间:2014-10-02 01:28:05

标签: c for-loop compiler-errors

所以我有以下C代码:

for (int i = 0; i < nWallSegments; i+=4) {
  fscanf(fin, "%le %le %le %le", &wallSegments[i+0], &wallSegments[i+1], &wallSegments[i+2], &wallSegments[i+3]);
}

for (int i = 0; i < nWallSegments; i+=4) {
  nWallPoints += ceil(dist(wallSegments[i+0], wallSegments[i+1], wallSegments[i+2], wallSegments[i+3]) / dWallPoints) - 2;
  // other stuff here
}

当我尝试编译时,出现以下错误。来自Python背景,我不知道发生了什么。我在网上搜索了答案,但没有运气。

Prog.c:44:12: error: redefinition of 'i'
  for (int i = 0; i < nWallSegments; i+=4) {
           ^
Prog.c:40:12: note: previous definition is here
  for (int i = 0; i < nWallSegments; i+=4) {c

3 个答案:

答案 0 :(得分:6)

这取决于编译器和/或标准C的版本。

在标准C 1999及更高版本(C99和C11)中,可以在循环中声明一个变量,而且,范围只是循环,就像在C ++中一样。

通过使用一些现代C语言进行编译,您的代码必须正常运行。

我使用GCC选项-std = c99(或c11) 在这种情况下,您的代码适合我。

答案 1 :(得分:3)

您无法在ANSI C89中的for循环中声明i。在for循环之外声明一次。

答案 2 :(得分:1)

“重新定义'我'”。您在同一范围内两次定义变量i。你不能在C中那样做。删除第二个int,它应该没问题。