[Error] ISO C++ forbids comparison between pointer and integer [-fpermissive]
时间: 2023-11-29 21:04:41 浏览: 153
这个错误通常是因为在比较指针和整数时出现了问题。在 C++ 中,您不能直接比较指针和整数,因为它们属于不同的类型。您需要将指针转换为整数才能进行比较,或者使用指针之间的比较运算符。
例如,如果您有一个指向整数的指针,可以将其转换为整数并进行比较:
```
int* ptr = some_pointer;
if ((int)ptr == some_integer) {
// do something
}
```
或者,如果您要比较两个指针是否相等,可以使用指针之间的比较运算符:
```
int* ptr1 = some_pointer1;
int* ptr2 = some_pointer2;
if (ptr1 == ptr2) {
// do something
}
```
请注意,这些方法都需要谨慎使用,因为指针和整数之间的转换可能会导致意想不到的结果。
相关问题
12 15 C:\Users\Administrator\Desktop\临时.cpp [Error] ISO C++ forbids comparison between pointer and integer [-fpermissive]
根据你提供的错误信息,这个错误出现在你的临时.cpp文件中。错误提示指出,在某个地方你进行了指针和整数之间的比较,而ISO C++标准不允许这样的比较。
要解决这个问题,你可以考虑以下几个方面:
1. 检查代码中的比较操作:在你的临时.cpp文件中寻找涉及指针和整数比较的地方。确保你没有错误地将指针与整数进行比较。
2. 确保使用指针正确:如果你使用了指针,请确保你正确地声明和使用它们。指针应该指向有效的内存地址,并且在进行比较操作之前应该检查它们是否为NULL或野指针。
3. 修改代码逻辑:如果你确定指针和整数之间确实需要进行比较,你可以修改代码逻辑来避免这个错误。你可以转换指针为整数,或者根据实际需求修改代码逻辑来避免这种比较。
4. 检查编译选项:确保你的编译选项没有设置为-fpermissive(宽松模式),因为这会允许不符合ISO C++标准的一些操作。建议使用符合标准的编译选项进行编译。
总之,你需要仔细检查你的代码,并根据需要修改代码逻辑,以避免指针和整数之间的比较错误。
42 11 D:\code\2023-5\FBI树 再做.cpp [Error] ISO C++ forbids comparison between pointer and integer [-fpermissive]
这个错误提示是因为你在代码中使用了指针和整数的比较,而 C++ 中默认是不允许这样的操作的。解决方法是将指针转换成整数类型再进行比较,或者使用指针比较运算符(`==` 或 `!=`)进行比较。
例如,如果你想比较一个指针和一个整数是否相等,可以将指针转换成 `intptr_t` 类型(整数类型),然后进行比较:
```
if ((intptr_t)ptr == 42) {
// do something
}
```
或者直接使用指针比较运算符:
```
if (ptr == (void*)42) {
// do something
}
```
注意,使用指针比较运算符时,需要将整数转换成 `void*` 类型的指针。
阅读全文