Linux Eclipse C中的奇怪编译错误

时间:2012-04-07 22:30:09

标签: c linux eclipse

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

你可以看到一个简单的main函数和一些代码。只有15行代码,但如果你看一下它们在外部库中的错误,stdio.h。在main中,它说第11行有一个错误但是没有意义。我认为这是一个Eclipse设置问题,但我不知道如何解决它。任何帮助将非常感激。顺便说一句,我正在使用SciLinux和Eclipse Indigo Service Release 2.谢谢 enter image description here

代码:

#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;
}

3 个答案:

答案 0 :(得分:0)

int *ptr;
int a;
int b; //<- move to block top declaration 
a = 20;
ptr = &a;

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

Variable declaration placement in C

How to enforce C89-style variable declarations in gcc?

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