我希望有人可以帮我解决这个问题。我是Linux& Eclipse noob,但我对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;
}
答案 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中。