c++ - 警告 : "Not all control paths return a value" c++

标签 c++ compiler-warnings

我不明白我的小功能的这个警告:

int Fct_name (int nb1, int * nb2) 
{
    switch (Dest)
    { 
    Case 1 : 
        return Fct_1(nb1,nb2);
    Case 2 :
        return -1;
    }
}

有人可以帮助我吗?

最佳答案

这是因为,正如警告所说,并非所有代码路径都会返回值,而函数具有不同的返回类型,告诉编译器“嘿,我要返回一些东西”。但如果 Dest 不是 1 或 2,您实际上不会这样做。

<小时/>

您评论过:

Dest can only be 1 or 2 (it's an enum)

是的,好的,但是只有你知道这一点,你的编译器不知道,而且它不会相信你的话。它只能看到代码的静态属性,无法预测运行时将如何运行,因此它不会接受您的代码。据它所知,Dest 可以通过外部代码段等进行更改。

<小时/>

您应该添加某种默认值:

int Fct_name (int nb1, int * nb2) 
{
   switch (Dest)
   { 
    case 1 : 
         return Fct_1(nb1,nb2);
    case 2 :
         return -1;
    }
    return 0;
}

关于c++ - 警告 : "Not all control paths return a value" c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44567830/

相关文章:

c# - 通过代码注入(inject)从另一个应用程序调用方法?

java - 参数 'foo' 不应该被赋值——有什么害处?

c - 为什么 clang -Wempty-body 没有检测到这种情况?

c++ - 加权 Voronoi 的 CGAL 2D APOLLONIUS 图 - 如何生成和获取面和顶点?

c++ - 虚函数可以成为 RVO(返回值优化)的候选者吗?

c++ - Qt QGraphicsView 和样式表

c++ - 帮助成员函数计算距离

maven - 在不编辑 pom.xml 的情况下显示编译器警告

ios - 如何抑制 Xcode 中的警告?

cuda - 如何禁用特定的nvcc编译器警告