gpt4 book ai didi

c++ - 为什么允许将 int 文字设置为指针,但不允许进行比较?

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:41 26 4
gpt4 key购买 nike

<分区>

这是完整的代码。它是我自制的单元测试框架的一部分。

#include <iostream>

#define IS(arg1, arg2) is(arg1, arg2, #arg1 " == " #arg2)

template<typename T1, typename T2>
void is(T1 value, T2 expect, const char* desc)
{
if (value == expect)
{
std::cout << "ok " << " - " << desc << std::endl;
}
else
{
std::cout << "NOT ok " << " - " << desc << std::endl
<<" got " << value <<", expect "<< expect << " " << std::endl;
}
}

struct Foo
{};

int main(int argc, char** argv)
{
Foo* foo = 0;
IS(foo, 0);
}

编译器会声明:

test.cpp:8:15: error: comparison between pointer and integer ('Foo *' and 'int')
if (value == expect)
~~~~~ ^ ~~~~~~

是不是因为实际比较发生在指针和int变量之间?

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com