未选中C++返回语句.Linux <p>(UBUNTU 16.04) 下的
C++ return statement not checked
g++ 5.4.1 将编译以下内容没有错误或警告的程序:
#include <iostream>
std::string foo(){
int a= 1;
a++;
}
int main(){
std::cout << foo();
return 0;
}
显然,"foo()"中的返回语句丢失了,程序在我的计算机核心转储中。我在问自己为什么没有返回语句在编译时甚至没有警告?我错过了吗东西?
我怀疑您没有在启用警告的情况下进行编译。
像这样编译:
g++ -Wall -Wextra main.cpp
你应该得到:
警告:函数中没有返回语句返回非 void [-Wreturn 类型]
PS:这与 GCC 的版本无关。
编译器
不必生成诊断消息,这就是为什么必须启用警告标志才能让编译器进行投诉的原因。阅读更多内容,请参阅为什么C++代码段编译(non-void 函数不返回值)。
您没有包含相应的警告标志。您可能只使用了以下内容:
g++ source.cpp
加: -Wall
、-pedantic
、-Wextra
和类似标志:
g++ -std=c++14 -Wall -Wextra -pedantic source.cpp
现场示例
话虽如此,您还应该包括<string>
标头:
#include <string>
而不是依靠<iostream>
的免费弦乐设施.
相关文章:
- 松弛原子与无同步情况下的记忆连贯性
- vscode下的Arduino代码出现意外编译错误
- 我是c ++的新手,你能解释一下在这种情况下的指针吗
- 在 C/C++ 中打开驻留在 "/sys/" 下的文件时出错
- 分段 Linux Ubuntu 中的 g++ 错误,但在 Windows 中的 g++/MingW 中,在 C++ 中打
- 特定情况下的分段错误
- 矩阵中主对角线下的最高偶数.超大数字的解决方案?
- Cygwin下的gcc 9.3.0预处理器:cmdline -Dname,但名称似乎未定义
- 命令提示符下的 NVCC CUDA 不使用 GPU
- 在 directx11 代码中更改全屏模式下的刷新率不起作用
- 两种情况下的输出不应该相同吗?
- Ubuntu 下的 Cmake 和 Intel IPP 的编译问题
- 如何在ubuntu下使用eigen3的cholmodsupport
- 未选中C++返回语句.Linux
(UBUNTU 16.04) 下的
- Android NDK 中的语义错误在 Ubuntu 中的 Eclipse 下
- 使用不同的头类型在Ubuntu下编译
- OpenCV c++不加载任何视频在Ubuntu 16.04下的视频捕获
- Ubuntu 下的 C++ 链接 Boost 库与 cMake:未定义的引用 'boost::iostreams::zlib::ok'
- Linux Ubuntu下的绕道功能
- 为什么ubuntu 12.04下的OpenMP比串行版本慢