什么是“void(0)”?

问题描述 投票:0回答:1

我知道

(void)0
在 C/C++ 中是一个空操作。 然而,当我查看
<cassert>
中的代码时,我看到了
void (0)

我猜它类似于

int (0)
int{0}
。 我也尝试过
void{}
并且有效。 看来这是对
void
的零初始化。

但是

void
是一个不完整类型,为什么编译器不抱怨呢? (
g++-14 -std=c++23 -Wall
)

c++
1个回答
0
投票

当您在 C++ 中编写

T(E)
时,其中
T
是类型,
E
是单个表达式,则称为函数式强制转换表达式,与旧式强制转换表达式
(T)E
完全相同。

所以

void(0)
完全等同于
(void)0

(在运算符优先级和语法允许

T
准确包含的内容方面存在一些解析差异。)

© www.soinside.com 2019 - 2024. All rights reserved.