gpt4 book ai didi

c++ - 为什么 g++ 允许我将此 void 函数视为除此之外的任何东西?

转载 作者:可可西里 更新时间:2023-11-01 17:16:03 25 4
gpt4 key购买 nike

为什么以下代码在 GCC 4.8 (g++) 中编译?它不是完全错误的吗?

void test(int x)
{
return test(3);
}

int main() {}
  1. 我正在尝试使用调用 test 的结果,它不存在
  2. 我正在尝试从 test 返回一个值

如果返回类型为 void,这两者从根本上来说都是不可能的——不仅仅是 UB,据我所知。

我得到的唯一警告是关于 x 未被使用,甚至没有任何关于添加非标准隐式返回类型的警告。

Live demo

最佳答案

这是标准允许的 (§6.6.3/3)

A return statement with an expression of type void can be used only in functions with a return type of cv void; the expression is evaluated just before the function returns to its caller.

关于c++ - 为什么 g++ 允许我将此 void 函数视为除此之外的任何东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20923800/

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