gpt4 book ai didi

c++ - 为什么 C++ 的 NULL 通常是整数文字而不是像 C 中的指针?

转载 作者:行者123 更新时间:2023-12-04 11:08:26 25 4
gpt4 key购买 nike

我已经写 C++ 很多年了,使用 nullptr对于空指针。我也知道 C,从那里 NULL 起源,并记住它是空指针的常量,类型为 void * .
出于某些原因,我不得不使用 NULL在我的 C++ 代码中。好吧,想象一下当在一些模板参数推导过程中编译器告诉我我的 NULL 真的是一个......长时我的惊讶。所以,我仔细检查了:

#include <type_traits>
#include <cstddef>

static_assert(not std::is_same<decltype(NULL), long>::value, "NULL is long ???");
事实上,静态断言失败(使用 GCC 和 Clang)。
我查了 cppreference.com ,果然(C++11 措辞):

The macro NULL is an implementation-defined null pointer constant, which may bean integer literal with value zero, or a prvalue of type std::nullptr_t.


为什么这是有道理的?就其本身而言,鉴于 C 的不兼容性?

最佳答案

C 不只是简单地定义 NULL(void *)0 .也可以将其定义为 0或任何计算结果的常量表达式。使用 #define NULL 0以任何一种语言工作。

关于c++ - 为什么 C++ 的 NULL 通常是整数文字而不是像 C 中的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69057184/

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