解决Eclipse CC++ 报错:could not be resovledUnresolved inclusion

    技术2023-09-17  112

    参考链接:

    解决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一下,再查看。 再search for unresolved Includes,结果还是一样……

    第二次解决(成功!!)

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

    // 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。

    解决方法:

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

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

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

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

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

    Processed: 0.010, SQL: 9