在现代 C 标准中是否有 nullptr(或等效的)这样的东西?

use*_*501 1 c c17

nullptr在一行 C 代码中包含了一个检查。编译器 (gcc) 在使用-std=c17以及-std=gnu17.

在现代 C 标准中是否有 nullptr(或等效的)这样的东西?(C11, C17)

如果不是,那为什么呢?

ana*_*lyg 5

不,C 仍然使用NULL空指针。

C++ 需要一个专用的空指针字面量,因为它具有重载和模板类型推导。这些特性被 混淆NULL,它0在 C++ 中扩展为(或类似的)。但是,在 C 中这种混淆的风险很小(可能_Generic会被这个混淆),此外,C 可以(void*)0用于空指针,这进一步降低了这种风险。


Bru*_*ble 5

ISO C 23现在有nullptr,以及nullptr_t类型。提出它的提案有一定的道理。