invalid conversion from 'void (*)()' to 'void (*)(byte)' {aka 'void (*)(unsigned char)'} [-fpermissive]
时间: 2024-05-26 13:15:15 浏览: 116
这个错误通常发生在函数指针类型不匹配的情况下。在C++中,函数指针类型必须与函数的参数类型和返回类型匹配。在您的代码中,您可能尝试将一个无参数的函数指针转换为一个带有一个byte参数的函数指针。这会导致编译器抛出上述错误。
要解决这个问题,您需要确保函数指针的类型与函数的参数类型和返回类型匹配。如果您的函数需要一个byte参数,则您需要使用带有一个byte参数的函数指针来调用它。如果您的函数不需要任何参数,则您需要使用无参数的函数指针来调用它。
相关问题
Compilation error: invalid conversion from 'void*' to 'const uint8_t*' {aka 'const unsigned char*'} [-fpermissive]
这个错误通常是由于类型不匹配引起的。在你的代码中,你试图将一个 `void*` 指针转换为一个 `const uint8_t*` 类型的指针,但是这种类型转换是不合法的。
你需要进行显式的类型转换,将 `void*` 指针转换为 `const uint8_t*` 类型的指针,例如:
```
const uint8_t* ptr = static_cast<const uint8_t*>(void_ptr);
```
其中 `void_ptr` 是你原来的 `void*` 指针。请注意,这种类型转换可能会导致数据损失或未定义的行为,因此需要谨慎使用。
invalid conversion from ‘BYTE*’ {aka ‘unsigned char*’} to ‘char*’ [-fpermissive]
这个错误是因为在程序中将一个 BYTE* 类型的指针强制转换为 char* 类型指针。这种转换是不安全的,因为它会导致指针指向的内存被解释为不同的类型,可能会导致内存访问错误或未定义的行为。
要解决这个问题,您可以使用 C++ 中的 reinterpret_cast 操作符将指针从一个类型转换为另一个类型。例如:
```
BYTE* myBytePtr = ...;
char* myCharPtr = reinterpret_cast<char*>(myBytePtr);
```
但是请注意,这种转换仅在您确定在转换后的指针上执行的操作不会引起未定义的行为时才应使用。
阅读全文