参考链接:
第一次解决(失败。。)
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*。