[Error] invalid conversion from 'char*' to 'int' [-fpermissive]C语言报错
时间: 2024-06-04 19:10:16 浏览: 25
这个错误是因为在程序中将一个 `char*` 类型的指针赋值给了 `int` 类型的变量。C语言中不允许将指针类型直接赋值给非指针类型。
需要检查一下程序中是否有这样的赋值操作,如果有,可以考虑将其改为适当的类型转换,例如使用 `atoi` 函数将字符串转换为整数类型,或者使用 `sprintf` 函数将整数类型转换为字符串类型。
另外,建议在编译时开启 `-Wall` 和 `-Werror` 选项,这样可以更容易地发现代码中的错误,并将警告转换为错误,避免造成潜在的问题。
相关问题
[Error] invalid conversion from void* to char** [-fpermissive]
这个错误通常是由于将 `void*` 类型的指针直接赋值给 `char**` 类型的指针导致的。因为 `void*` 类型的指针可以指向任何类型的数据,而 `char**` 类型的指针只能指向 `char*` 类型的指针。
要解决这个问题,你需要先将 `void*` 类型的指针转换为 `char*` 类型的指针,然后再将其赋值给 `char**` 类型的指针。例如:
```c++
void* data = get_data();
char* char_data = static_cast<char*>(data);
char** char_ptr = &char_data;
```
这样就可以将 `void*` 类型的指针 `data` 转换为 `char**` 类型的指针 `char_ptr` 了。注意,这里使用了 `static_cast` 进行类型转换,如果你不确定类型转换是否安全,可以使用 `dynamic_cast` 进行安全的类型转换。
error: invalid conversion from ‘char*’ to ‘unsigned char*’ [-fpermissive]
这个错误是因为你在将一个 char 指针转换为 unsigned char 指针时没有进行强制类型转换。在 C++ 中,char 和 unsigned char 是不同的类型,它们之间的转换需要显式地进行类型转换。
例如,如果你的代码是这样的:
```c++
char* str = "hello";
unsigned char* ustr = str;
```
你需要将第二行改为:
```c++
unsigned char* ustr = reinterpret_cast<unsigned char*>(str);
```
这样就可以将 char 指针转换为 unsigned char 指针了。请注意,这种转换可能会导致未定义的行为,因为它假设 char 数组中的每个元素都可以安全地转换为 unsigned char 类型。