错误:ISO C++禁止指针和整数之间的比较

Error:ISO C++ forbids comparison between pointer and integer

本文关键字:整数 之间 比较 指针 ISO C++ 禁止 错误      更新时间:2023-10-16

>我有以下几点:

    wxIntPtr* value;
    CreateRegKey();
    if (regkeyexist) {
        if (regKey->HasValue("LoggingStatus")) {
            regKey->QueryValue("LoggingStatus", value);
            if (value == 1)

但是我得到错误,因为C ++禁止指针和整数之间的比较

这应该编译,但我不知道它是否是你想要的:

...
if (*value == 1)
...

您正在尝试将intpointer进行比较

如果您确实想查看pointer是否1

if (value == (wxIntPtr*)(1))

否则,如果您尝试与 value 指出的值进行比较

if (*value == 1)

虽然我不知道你为什么要做第一个:)

我认为您可能应该做的是以下内容:

wxIntPtr value; // wxIntPtr on the stack
...
regKey->QueryValue("LoggingStatus", &value); // Pass by reference to modify.
        if (value == 1)

这是大多数Windows编程的完成方式,API调用初始化您自己实例化的值和结构。很有可能当你wxIntPtr* value传递给QueryValue()时,它会尝试并像这样设置它的值:

QueryValue("LoggingStatus", &value) { *value = 1; } // For example.

在您的情况下,这将在尝试取消引用未初始化的指针时导致崩溃。