【问题标题】:Strange compile errors in Linux Eclipse CLinux Eclipse C 中的奇怪编译错误
【发布时间】:2012-04-07 22:30:08
【问题描述】:

我希望有人可以帮助我解决这个问题。我是 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;
}

【问题讨论】:

  • 如果您在问题中粘贴实际代码和实际错误消息,而不是屏幕截图(难以阅读),那将是无限可取的。
  • 在我看来编译器找不到它的包含文件。检查您的 Eclipse 设置并仔细检查 Eclipse 如何调用编译器。
  • 还应该指出,根据那个截图,你还没有保存文件,这可以解释奇怪的不匹配。
  • @KeithRandall:这是标准 C99。
  • 根据截图,那是C程序,不是C++程序。删除 C++ 标签。

标签: c linux eclipse


【解决方案1】:
int *ptr;
int a;
int b; //<- move to block top declaration 
a = 20;
ptr = &a;

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      Variable declaration placement in C

      How to enforce C89-style variable declarations in gcc?

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

      【讨论】:

        猜你喜欢
        • 2012-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-29
        • 1970-01-01
        • 1970-01-01
        • 2014-08-29
        • 1970-01-01
        相关资源
        最近更新 更多