Eclipse CDT for C标准库头文件中存在“未解决的包含”错误

我为eclipse设置了CDT并编写了一个简单的hello world C程序:

#include <stdio.h>

int main(void){
    puts("Hello, world.");
    return 0;
}

该程序正确构建和运行,但是当我把鼠标放在它上面时,eclipse一直在包含语句旁边显示这个黄色问号,该句号是"Unresolved inclusion: <stdio.h>"

它不会影响程序的运行,但我觉得它很烦人。

有谁知道如何删除它?

12个解决方案
48 votes

Eclipse正在使用的编译器能够很好地解析符号,因此代码编译得很好。

但代码完成/预处理器Eclipse使用的还不知道stdio.h存在于何处。

您需要指定stdio.h所在的文件系统路径。

见:[http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.cdt.doc.user/tasks/cdt_t_proj_paths.htm]

ardnew answered 2019-08-12T17:27:54Z
47 votes

我发现这些答案(包括接受的答案)有点神秘。

对我来说,我必须添加stdio.h所在的路径(如@ardnew所说)。 在Eclipse中,打开项目的属性,展开&#34; C / C ++ General&#34; 并选择&#34;路径和符号&#34;。

确保为您使用的每种语言添加了include目录。 (就我而言,我需要将其添加到GNU C ++中。)

enter image description here

aaaidan answered 2019-08-12T17:28:33Z
17 votes

只是添加到知识库,我刚刚在win7上用cygwin做了这个。

这似乎对我有用。

包含c的路径:

D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include
D:\dev\cygwin\usr\include

包含c ++的路径:

D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include
D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include\c++
D:\dev\cygwin\usr\include

这让我对hello world进行了简洁的编译。

Ray Tayek answered 2019-08-12T17:29:26Z
16 votes

转到项目&gt; 属性&gt; C / C ++一般&gt; 预处理器包括&gt;供应商并选择两个:

  • &#34; CDT GCC内置编译器设置&#34;
  • &#34; CDT CROSS GCC内置编译器设置&#34;

对于其中每一个也选择子条目:&#34;使用项目之间共享的全局提供者&#34;。

在Ubuntu 16.04中的Eclipse 4.8.0上测试,带有C和C ++ hello世界。

Mike B answered 2019-08-12T17:30:19Z
10 votes
  • 选择文件&gt;&gt;新项目
  • 在项目向导中,选择C / C ++&gt;&gt; C ++项目
  • 在&#34;项目类型&#34; 部分,选择&#34; Makefile项目&gt;&gt; Hello world C ++ Project&#34;
  • 在&#34;工具链&#34; 部分,选择&#34; Linux GCC&#34;

它可以解决问题。 (请原谅我英文不好)

Nader Aryabarzan answered 2019-08-12T17:31:11Z
4 votes

我和Cygwin一起使用Eclipse,这对我有用:

转到项目&gt; 属性&gt; C / C ++一般&gt; 预处理器包括...&gt;供应商并选择&#34; CDT GCC内置编译器设置Cygwin [共享]&#34;。

superm0 answered 2019-08-12T17:31:43Z
4 votes

我正在使用多个交叉编译器配置,我需要为STD头文件(和其他环境变量)使用不同的位置。

解决方案是设置索引器,以便使用活动配置。
不幸的是,由于eclipse中存在一些错误,该选项并未存储在本地,因此如果要在再次打开eclipse时保存配置,则必须使用工作区配置。

窗口 - &gt; 偏好 - &gt; C / C ++ - &gt; 索引器 - &gt; 使用活动的构建配置

这将使eclipse使用通过项目的活动Cross GCC配置设置的正确编译器。

Yochai Timmer answered 2019-08-12T17:32:35Z
1 votes

在ADT中,我做了以下事情:

  1. 右键单击项目,然后选择“属性”
  2. 展开C / C ++ General并选择Preprocessor Include Paths,Macros等。
  3. 选择CDT用户设置条目
  4. 从右侧菜单中选择添加....
  5. 在“添加包含目录”中,将项目路径更改为“文件系统路径”
  6. 浏览到包含您的包含文件的目录
  7. 根据需要搅拌并重复
user330844 answered 2019-08-12T17:33:51Z
1 votes

通常,Eclipse应该能够自动解析标准包含文件。 它通过调用gcc并询问其配置来完成此操作。 Eclipse很可能没有找到你的gcc(或者至少不是你用来编译的版本)。

您可能希望确保Eclipse找到gcc,而不是在项目设置中指定所有标准包含路径。 在启动Eclipse之前,将找到gcc的目录添加到PATH环境变量中。

如果您希望不同的项目使用不同的编译器,那么您可能需要调整发现选项。 这些是默认隐藏的,因此首先从Window&gt;中启用它们。 偏好&gt; C / C ++&gt; 属性页设置&gt; 显示&#34;发现选项&#34; 页。 然后你可以在C / C ++ Build&gt;下找到它们。 项目属性中的发现选项。

Seppo Enarvi answered 2019-08-12T17:34:31Z
1 votes

正如(当前)顶部答案所述,指定构建文件夹所在的位置是必要的,可以通过右键单击项目到达的对话框添加,并选择属性 - > C / C ++ General- &gt;路径和符号。

剩下的问题是需要添加哪些路径。

如果您正在交叉编译或做一些奇特的事情,您可能知道您需要哪些路径以及以什么顺序(或者应该查看编译器和/或其他依赖项的文档)。

对于那些寻找基础知识的人:如果你为命令行访问正确设置了gcc,并且需要知道它使用的默认包含路径是什么,那就问问吧。

根据您感兴趣的语言,使用:

gcc -x c -v -E /dev/null
gcc -x c++ -v -E /dev/null

...这将列出调用gcc时使用的默认编译器设置(如果&#34; gcc&#34;实际上是clang的别名,则此命令也有效,如OSX上所示)。

在Windows上,请注意/dev/null只是空输入文件的简单速记(无需创建一个)。

底部将是包含目录的列表:

#include "..." search starts here:
#include <...> search starts here:
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/7.0.2/include
 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include
 /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/System/Library/Frameworks (framework directory)
End of search list.

如果按照列出的顺序输入此处列出的目录,进入Eclipse的路径和符号对话框,Eclipse CDT应该能够找到标准的标头,也许还有一些特定于您的操作系统的附加标头。

(感谢devnull对相关问题的回答。)

Theodore Murdock answered 2019-08-12T17:35:59Z
1 votes

我使用基于eclipse的CodeWarrior IDE进行嵌入式项目,我刚刚通过删除并再次将源地址添加到Project Properities-&gt; C / C ++ General-&gt; Path and Sybols-&gt;来解决了这个问题。 包括目录。 这意味着有很多理由采取&#34;未解决的包含:&#34; 消息,也有很多解决方案。

Enes Akyay answered 2019-08-12T17:36:24Z
0 votes

我配置路径和符号的错误是我最初配置了不同语言的包含路径。 我正在使用CDT和Cygwin gnu C ++。 因此,您必须在GNU C ++语言下配置符号和路径。enter image description here

rodolk answered 2019-08-12T17:36:49Z
translate from https://stackoverflow.com:/questions/9337757/unresolved-inclusion-error-with-eclipse-cdt-for-c-standard-library-headers