[Error] ISO C++ forbids comparison between pointer and integer [-fpermissive]
时间: 2023-11-29 12:04:41 浏览: 146
这个错误通常是因为在比较指针和整数时出现了问题。在 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
}
```
请注意,这些方法都需要谨慎使用,因为指针和整数之间的转换可能会导致意想不到的结果。
相关问题
58 9 E:\360MoveData\Users\Administrator\Desktop\c++\未命名1.cpp [Error] ISO C++ forbids comparison between pointer and integer [-fpermissive]
引用[1]:在.pro文件中,通过引入opencv库来使用opencv的功能。在INCLUDEPATH中指定了opencv的头文件路径,在LIBS中指定了opencv的库文件路径。[1]
引用[2]:ShowImage.h是一个头文件,其中定义了一个名为ShowImage的类,该类继承自QQuickPaintedItem,用于在QML中实时加载并显示图片。该类还包括了一些成员函数和信号槽,用于更新图片、启动相机和关闭相机等操作。[2]
引用[3]:在main.cpp中,通过qmlRegisterType函数将ShowImage类注册为QML类型,以便在QML中使用。这样,在QML中就可以使用ShowImage类的功能了。[3]
根据你提供的代码和错误信息,错误发生在未命名1.cpp文件的第58行,错误信息是"ISO C forbids comparison between pointer and integer [-fpermissive]"。这个错误通常是因为在代码中进行了指针和整数之间的比较,而C语言标准不允许这样的比较。要解决这个错误,你需要检查未命名1.cpp文件的第58行,确保没有进行指针和整数之间的比较。你可能需要修改代码逻辑或者进行类型转换来解决这个问题。
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++标准的一些操作。建议使用符合标准的编译选项进行编译。
总之,你需要仔细检查你的代码,并根据需要修改代码逻辑,以避免指针和整数之间的比较错误。
阅读全文