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

Der*_*ang 95 c eclipse eclipse-cdt standard-library

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

#include <stdio.h>

int main(void){
    puts("Hello, world.");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

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

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

有谁知道如何删除它?

aaa*_*dan 53

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

对我来说,我必须添加stdio.h所在的路径(如@ardnew所说).在Eclipse中,打开项目的Properties,展开"C/C++ General"并选择"Paths and Symbols".

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

在此输入图像描述

  • 在OS X上,您可能需要使用命令`/ usr/bin/xcode-select --install`手动安装命令行开发人员工具(首先需要安装Xcode),然后您就可以将Eclipse指向`/ USR /包括/` (2认同)

ard*_*new 50

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

  • 问题解决了.它在/ usr/include中.再次感谢. (13认同)
  • 链接坏了.有没有更新的机会? (6认同)
  • 谢谢回复.但是Ubuntu 11.10的路径在哪里? (2认同)
  • 现代编译器不区分引号和尖括号.传统的标准系统头仍然放在尖括号中. (2认同)

Ray*_*yek 17

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

这似乎对我有用.

包含c的路径:

D:\dev\cygwin\lib\gcc\i686-pc-cygwin\3.4.4\include
D:\dev\cygwin\usr\include
Run Code Online (Sandbox Code Playgroud)

包含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
Run Code Online (Sandbox Code Playgroud)

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


Mik*_*e B 17

转到项目>属性> C/C++常规>预处理器包含>提供程序,然后选择"CDT GCC内置编译器设置"和"CDT CROSS GCC内置编译器设置".

  • ...并选中"使用项目之间共享的全局提供程序"框 (3认同)

小智 10

  • 选择文件>>新建项目
  • 在Project Wizard中,选择C/C++ >> C++ Project
  • 在"项目类型"部分中,选择" Makefile Project >> Hello world C++ Project "
  • 在"工具链"部分中,选择" Linux GCC "

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