-1

我希望有人可以帮助我解决这个问题。我是 Linux 和 Eclipse 菜鸟,但我对 C/C++ 非常熟悉,尽管我已经有一段时间没有使用它们了。当我尝试编译时,我得到了奇怪的错误。无论我做什么来修复它们,它们似乎都不会消失。

你可以看到有一个简单的main函数,只需要一点代码。只有 15 行代码,但如果您查看它们在外部库中的错误,stdio.h. 其中main说第 11 行有一个错误,但没有任何意义。我认为这是一个 Eclipse 设置问题,但我不知道如何解决它。任何帮助将不胜感激。顺便说一句,我正在使用 SciLinux 和 Eclipse Indigo Service Release 2。谢谢 在此处输入图像描述

代码:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   int *ptr;
   int a;
   a = 20;
   ptr = &a;
   int b;
   b = *ptr;
   printf(" ptr is %d\n",b);
   return 0;
}
4

3 回答 3

0

以前的一些编译器有这个与 C 有关的奇怪问题,它们只接受在函数开头声明的变量。

所以很可能错误是因为您没有在块的开头声明变量 b ,我建议您尝试使用不同的编译器或准备在开头声明所有变量。

于 2012-04-08T09:52:21.450 回答
0

正如其他答案所说,在老式的普通 C 中混合代码和声明是非法的。请参阅:

C 中的变量声明位置

如何在 gcc 中强制执行 C89 风格的变量声明?

在 Eclipse 中,使用的标准版本将取决于传递给 C 编译器 gcc 的编译器标志:-std=c89 或 -std=c99。根据项目的设置方式,将位于 Eclipse 项目属性或 Makefile 中。

于 2012-04-08T10:47:22.523 回答
0
int *ptr;
int a;
int b; //<- move to block top declaration 
a = 20;
ptr = &a;
于 2012-04-07T22:43:00.110 回答