【发布时间】: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