`
yaojingguo
  • 浏览: 207877 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

GCC/G++'s treatment of missing return statement

阅读更多
gcc will not complain the missing of return statement.

foo.c

int add(int l, int r) {
}
int main(int argc, const char *argv[]) {
  int result = add(1, 2);
  result++;
  return 0;
}

$ gcc foo.c

By add -Wall, gcc gives a warning

$ gcc -Wall foo.c
foo.c: In function ‘add’:
foo.c:2: warning: control reaches end of non-void function

In 6.8.6.4 of C99 standaard, there is the following text:

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

So gcc treats this constraint as a warning.

g++ is similar to gcc regarding return statement missing. In 7.3 of The C++
Programming Languge (3rd edition), there is the following text:

A value must be returned from a function that is not declared void (however,
main() is special; see void main §3.2). Conversely, a value cannot be returned
from a void function.

In 6.6.3 of ISO/IEC 14882:2003, there is the following text:

Flowing off the end of a function is equivalent to a return with no value; this
results in undefined behavior in a value-returning function.

http://old.nabble.com/missing-return-statement-td22487507.html is a discussion
about why g++ treats missing return statement in the current way.
0
0
分享到:
评论

相关推荐

    Linux gcc/g++ rpm安装包

    gcc-4.8.5版本的rpm安装包,解压进入目录后运行sudo rpm -Uvh *.rpm --force进行安装(如果安装提示依赖错误,可在命令后再加上--nodeps),安装完成后可通过gcc --version和g++ --version查看版本信息

    centos7 gcc/g++离线rpm包

    本资源提供了适用于CentOS 7的GCC/G++离线RPM包,使得用户可以在不依赖互联网的情况下进行安装。 GCC(GNU Compiler Collection)是一组由GNU项目维护的编译器,它包括C、C++、Fortran、Objective-C、Ada等编程语言...

    winlibs gcc/g++编译器 mingw64 10.0.0-r4

    但是,在windows环境下使用gcc/g++编译器总会存在这样那样的问题,比如使用cin或者scanf输入中文,输出就变成了乱码等问题,本资源版本是由由WinLibs维护的开源版本winlibs-x86_64-posix-seh-gcc-12.2.0-llvm-15.0.7...

    ubuntu20.04 gcc/g++离线安装deb包及依赖包(全)

    ubuntu20.04 gcc/g++离线安装deb包及依赖包(全) 由于生产环境不联网,安装显卡驱动时需要预先安装gcc/g++, 故这里提供了gcc/g++离线安装包及依赖,安装命令简单:sudo dpkg -i ./*.deb

    自动万能makefile(linux ubuntu gcc/g++)

    名称:自动万能makefile(linux ubuntu gcc/g++) 作者:码客(卢益贵) qq:48092788 时间:2018-5-20 功能: 1、自动以makefile的父目录名为Target文件名称 2、自动搜索源码文件(含子目录) 3、自动搜索...

    windows环境 gcc/g++ mingw64.zip

    标题“windows环境 gcc/g++ mingw64.zip”表明这是一个用于在Windows操作系统中安装GCC和G++编译器的压缩文件。G++是GCC的一部分,专为C++编程语言提供支持,包括预处理、编译、汇编和链接等步骤。 描述中提到,...

    MinGW-w64 GCC/G++ 13.3

    MinGW-w64 GCC/G++ 13.3,非常著名的C++语言编译器。

    Android上的gcc/g++编译环境

    本主题将深入探讨如何在Android设备上建立和使用GCC(GNU Compiler Collection)和G++(GNU C++ Compiler)编译环境,以实现C和C++代码的编译和执行。这个压缩包提供了必要的工具和步骤来实现这一目标。 首先,`...

    Linux-GCC-G++编译器与调试器.ppt

    Linux GCC/G++编译器与调试器 本章节主要介绍了Linux系统下的GCC/G++编译器与调试器,包括GCC/G++编译器的安装、使用方法、编译命令、编译选项和执行过程,以及程序和进程的概念、ANSI C标准等知识点。 GCC/G++...

    linux下安装gcc/g++ rpm安装文件与说明

    G++是GCC的一部分,专门用于C++编程。RPM(Red Hat Package Manager)是Linux系统中广泛使用的软件包管理器,它可以帮助用户方便地安装、升级和卸载软件。本教程将详细讲解如何在Linux环境下通过RPM方式安装GCC和G++...

    MinGW-gcc/g++ for win32

    注意安装完成要按要求设置环境变量 PATH=C:\ProgramData\msys\mingw\bin;%PATH% 然后就可以在命令行调用gcc/g++命令了

    GCC/G++编译命令选项.pdf

    ### GCC/G++ 编译命令选项详解 #### 概述 GCC(GNU Compiler Collection)是一个广泛使用的开源编译器套件,支持多种编程语言,包括 C、C++ 等。G++ 是 GCC 的一部分,专门用于编译 C++ 程序。本文将详细介绍 GCC ...

    gcc、g++离线安装包

    在Linux环境下进行C++开发,GCC(GNU Compiler Collection)和G++是不可或缺的工具。GCC是一套由GNU项目开发的编程语言编译器,而G++是GCC的一部分,专门用于C++语言的编译。本离线安装包包含了在Linux系统上安装GCC...

    gcc编译选项详解 让你轻松掌握gcc/g++

    介绍常用GCC常用编译选项,让你轻松在linux环境下开发程序.

    ubuntu-gcc、g++不同版本的安装和切换.pdf

    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/...

    离线安装gcc(版本:7.2.0)

    ln -s /usr/local/gcc-4.5.1/bin/g++ /usr/bin/g++ ``` 8. **验证安装** 使用以下命令验证GCC的版本是否正确: ``` gcc -v g++ -v ``` #### 注意事项 - 所有命令均应在当前文件夹目录下执行,并且最好以...

    mingw & gcc/g++ 13.2.0 & cmake 3.27.8

    解压后打开mingw64.exe,输入gcc -v ; g++ -v ; cmake --version可查看当前版本编译执行文件在msys64\mingw64\bin目录下,配置时指定到该目录即可。

    Linux gcc/g++ Makefile基础教程.zip

    在Linux环境下,`gcc`和`g++`是C和C++编程语言的编译器,而`Makefile`则是管理这些程序编译过程的重要工具。`Makefile`允许开发者自动化构建、编译和链接代码的过程,提高了工作效率,特别是在大型项目中更为明显。 ...

    CentOS配置CC++竞赛环境gcc/g++4.9.2

    CentOS配置C/C++竞赛环境gcc/g++4.9.2 文章目录CentOS配置C/C++竞赛环境gcc/g++4.9.2配置环境测试添加编译选项偷懒的方法 要参加蓝桥杯 C/C++编译环境4.9.2 阿里镜像站搜索到4.9.2版本在devtooset-3中 配置环境 ...

    Gcc和G++编译器的完美绍

    #### 二、GCC/G++概述 ##### 2.1 GCC/G++ 版本信息与配置 GCC 是 Linux 下用于 C/C++ 语言的编译器,可从官方网站 http://ftp.gnu.org/gnu/gcc/ 免费获取官方发布的版本。通过在 Shell 提示符下输入 `gcc -v`,我们...

Global site tag (gtag.js) - Google Analytics