【问题标题】:Eclipse CDT - Symbol `__RLIMIT_NPROC` could not be resolvedEclipse CDT - 符号“__RLIMIT_NPROC”无法解析
【发布时间】:2015-09-06 14:52:12
【问题描述】:

我在 Ubuntu 15.04 上使用 Eclipse Mars CDT 编写一些 C 代码。

Eclipse 报错如下:

但似乎 Eclipse 知道 RLIMIT_NPROC 已扩展为 __RLIMIT_NPROC。我可以使用Ctrl+Click 跳转到定义RLIMIT_NPROC 的位置,即/usr/include/i386-linux-gnu/bits/resource.h

在该文件中,__RLIMIT_NPROC 仅定义在宏声明上方的一行。 eclipse怎么能找到RLIMIT_NPROC却找不到__RLIMIT_NPROC???见下文:

我的项目Inclueds 看起来像这样:

添加 1

添加以下行可以解决符号问题:

#include <bits/resource.h>

但是编译失败了:

我按要求更改为包含<sys/resource.h>,符号问题再次出现...

【问题讨论】:

  • 如果您的代码编译时没有错误(即在 Eclipse 之外),则可能是 CDT 中的错误
  • @szx 我不想说这是错误。但目前,我倾向于这样认为。并忍受它。我开始怀念过去使用 Visual Studio 的美好时光。
  • 在 resource.h 文件中给出了这个注释:“/* 将定义转换为枚举。宏重新定义是必要的,因为某些程序想要使用 #ifdef RUSAGE_SELF 测试操作系统功能。在 ISO C 反身定义是无操作的。*/" 一个关键问题是:你告诉编译器使用什么标准? -std=c99 -std=c11 -ansi 如果标准是 -ansi 那么这可能是问题的根源
  • @user3629249 我想我没有修改-std 的默认值。在哪里可以查到?
  • @user3629249 我看到一些帖子说它在Project Properties/Settings/C Compiler/Miscellaneous/Other Flags。但我在Eclipse Mars CDT for Linux 中根本看不到它。

标签: c linux eclipse eclipse-cdt


【解决方案1】:

一切对我来说都很完美。我创建“C 项目”(File->New->C project->Hello world ANSI C 项目)并插入以下代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/resource.h>
#include <sys/time.h>

int main(void) {
    struct rlimit t;
    getrlimit(RLIMIT_NPROC, &t);
    return EXIT_SUCCESS;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 2012-06-03
    • 2013-10-27
    • 2013-12-01
    • 1970-01-01
    相关资源
    最近更新 更多