invalid conversion from 'uint16_t*' {aka 'short unsigned int*'} to 'uint16_t' {aka 'short unsigned int'} [-fpermissive]
时间: 2024-04-17 17:29:53 浏览: 727
这个错误提示表明在代码中存在类型不匹配的问题。具体来说,将一个 `uint16_t*`(指向 `uint16_t` 类型的指针)转换为 `uint16_t`(`uint16_t` 类型)时发生了错误。
要解决这个问题,你可以检查以下几点:
1. 确保你的代码中的变量声明和使用的类型是一致的。例如,如果你需要使用 `uint16_t` 类型的值,就应该使用 `uint16_t` 类型的变量,而不是指向 `uint16_t` 的指针。
2. 如果你确实需要使用指针,而不是值,那么你需要使用解引用操作符 `*` 来获取指针指向的值。例如,如果你有一个 `uint16_t*` 类型的指针 `ptr`,你可以通过 `*ptr` 来获取指针指向的 `uint16_t` 值。
3. 如果你在函数调用或赋值语句中出现了类型不匹配的问题,你可能需要进行相应的类型转换。在 C/C++ 中,可以使用类型转换操作符来将一个类型转换为另一个类型。例如,可以使用 `(uint16_t)` 来将一个值转换为 `uint16_t` 类型。
请根据你的具体代码和需求检查并修正类型不匹配的问题。如果你能提供更多的代码片段或上下文信息,我可以给出更具体的帮助。
相关问题
invalid conversion from ‘pthread_t {aka long unsigned int}’ to ‘pthread_t* {aka long unsigned int*}’是怎么回事
这个错误通常发生在将一个 pthread_t 类型的值赋值给一个 pthread_t 指针的时候。pthread_t 是一个不透明的数据类型,实际上是一个整数,而不是一个指针类型。因此,将 pthread_t 类型的值直接赋值给 pthread_t 指针是错误的。
举个例子,如果有如下代码:
```
pthread_t tid;
pthread_create(&tid, NULL, thread_func, NULL);
pthread_join(tid, NULL);
```
上述代码中,pthread_create() 函数的第一个参数是一个指向 pthread_t 类型变量的指针,而不是 pthread_t 类型本身。因此,如果将上述代码中的 &tid 改为 tid,就会出现上述错误。
你需要将代码中的指针类型改为非指针类型,或者将指针类型的变量改为指针类型的指针。
pullflowmonitor.cpp: In member function 'void PullFlowMonitor::handleYolov8Model(void*, ImagePair*)': pullflowmonitor.cpp:2334:143: error: invalid conversion from 'uint8_t* {aka unsigned char*}' to 'uint32_t {aka unsigned int}' [-fpermissive] ame,rgbFrameSize,rgbThumbnail,imagePair->frame.width,imagePair->frame.height)) ^ pullflowmonitor.cpp:2334:143: error: too many arguments to function 'int32_t generate_picture(const char*, PictureFormat, PixelFormat, const uint8_t*, uint32_t, uint32_t, uint32_t)'
这个错误信息是编译器给出的,在 PullFlowMonitor 类的成员函数 handleYolov8Model 中,第2334行出现了错误,函数 generate_picture 的参数类型不匹配。具体来说,将一个指向 uint8_t 类型的指针转换成了 uint32_t 类型,这是无效的。在函数 generate_picture 的调用中,传递的参数过多,导致了这个错误。建议检查一下函数的定义和调用是否一致,尤其是参数类型和数量是否匹配。
阅读全文