参考链接:

  1. 解决Eclipse C/C++中”Unresolved inclusion” 的错误提示 | 学步园 https://www.xuebuyuan.com/1257482.html

第一次解决(失败。。)

eclipse 运行C/C++时,报错:could not be resovled,如下图
错误
考虑头文件没有被编译器识别成功,按照转载文章的做法,添加路径:

  • Eclipse的编辑环境当中没有找到相应的header files,那么解决办法也很简单,就是把header files引入进来
  • 操作步骤如下:
    1、右击工程 > Properties, 打开工程属性窗口
    2、在左侧列表里选中C/C++ General/Paths and Symbols,为C/C++build添加include path
    3、目录自己选择

可以按下图查看没有resolve成功的文件都有哪些:
在这里插入图片描述

工程文件处右键->Properties->C/C++ General->Path and Symbols->Includes->GNU C->add添加缺少的.h文件所在的文件夹路径。
(C语言的注意选GNU C)在这里插入图片描述
打开Properties的界面:
在这里插入图片描述
重新refresh一下,再查看。
reresolve
再search for unresolved Includes,结果还是一样……

第二次解决(成功!!)

先看看 unresolved 的程序代码,以其中一个为例说明解决过程:
error
抄写如下:

// Description	 Resource	Type
// Type 'TaskHandle_t' could not be resolved       main.c      Semantic Error
static TaskHandle_t a = NULL; // TaskHandle_t在eclipse中显示下方有红色波浪

发现无法右键open Declaration查看定义处。
在Problems窗口下可以看到Errors中有一条Type ‘TaskHandle_t’ could not be resolved

解决方法:

  1. 找到 TaskHandle_t 声明的位置,比如:
typedef void * TaskHandle_t;
  1. 用实际的Type类型替换回去:
// No Error
static void* = NULL; // 正常
  1. 重新debug可以发现Error消失了一个。

注:不过这个error不去修改也不会影响实际应用,只是调试的时候不方便open declaration。

tip:(来源:void*是怎样的存在? - 知乎

  • 很多接口中都会发现它们的参数类型都是void*
    void* 是一种无类型指针,任何类型指针都可以转为void*,它无条件接受各种类型

  • 对于这种通用型接口,你不知道用户的数据类型是什么,但是你必须能够处理用户的各种类型数据,因而会使用void*。void* 能包容地接受各种类型的指针。也就是说,如果你期望接口能够接受任何类型的参数,你可以使用void* 类型。但是在具体使用的时候,你必须强制转换为具体的指针类型。例如,你传入接口的是int*,那么你在使用的时候就应该按照int* 使用,如(int*) void*。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐