c++ - GCC:在 "control reaches end of non-void function"中断编译

标签 c++ c gcc g++

当我添加

#pragma GCC diagnostic error "-Wreturn-type"

编译器会为每个缺少的return 生成警告,而不是错误。我怎样才能让它把这个特定的警告变成错误?

测试代码:

#pragma GCC diagnostic error "-Wreturn-type"

int foo(int x)
{
    if (x) return 8;
}

int main(int narg, char* arg[])
{
    foo(narg);
}

我试过

i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5666) (dot 3)

i686-apple-darwin10-llvm-g++-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.6)

更新:我已经按照@sastraxi 的建议尝试了-Werror=return-type,但它具有相同的效果。

最佳答案

尝试将 -Werror=return-type 传递给 gcc!

关于c++ - GCC:在 "control reaches end of non-void function"中断编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9835720/

相关文章:

c++ - 为什么在 CUDA .cu 文件中会发生多重定义错误

c++ - c2447错误学习创建Win32窗口

c++ - Linux 上的 int128 用于 Intel 编译器

c++ - CppUTest 单元测试框架多重定义异常

gcc - 裸机工具链有何特别之处?

c - 将头文件包含到静态库中

c++ - 访问未分配的内存 C++

c - 将 double 映射到 long 数字的函数

c - 在 C (Linux) 中查找虚拟网络接口(interface)

c - 我在 C 中这个数组做错了什么?