c++ - 是否返回无效的有效代码?

标签 c++ c

我发现以下代码被 Visual C++ 2008 和 GCC 4.3 编译器接受:

void foo()
{

}

void bar()
{
  return foo();
}

我有点惊讶它可以编译。这是语言功能还是编译器中的错误? C/C++ 标准对此有何规定?

最佳答案

这是 C++ 的语言特性

C++ (ISO 14882:2003) 6.6.3/3

A return statement with an expression of type “cv 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 (ISO 9899:1999) 6.8.6.4/1

A return statement with an expression shall not appear in a function whose return type is void.

关于c++ - 是否返回无效的有效代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3383090/

相关文章:

c++ - MySQL Connect/C++ 64 位构建错误

c++ - 这是否过于聪明或不安全?

c++ - 您如何选择要运行的特定 Google Mock 测试用例/单元测试?

c++ - 我的编码有问题吗?

C - n 个自然数之和的递归函数

c - 简单地用C加密一个字符串

c++ - 检测 32 位或 64 位 Windows

c - 动态分配数组时出错。 vfscanf.c : 1898

c - 在没有 root 权限的情况下实现共享内存

c - gcc 用 memcpy 和 memset 替换循环