首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MISRA-C++:2008[8-4-3]:函数中所有退出路径的返回

MISRA-C++:2008[8-4-3]:函数中所有退出路径的返回
EN

Stack Overflow用户
提问于 2013-12-06 13:25:27
回答 1查看 495关注 0票数 4

在测试我的代码(静态分析)以确定我是否遵守misra c++ 2008时,我得到以下错误

函数不会在所有路径上返回值。

这个函数看起来像

代码语言:javascript
复制
int* Dosomething(string v)
{
   int* retvalue = NULL;

   if( 0 == exists(v) )
   {
      throw("error: value doesn't exist");
   }
   else
   {
     retvalue = dosomecomputations(v);
   }

   return retvalue;
}

我真的需要抛出一个异常,因为根据错误,调用方应该做一些事情。可能出现的错误列表可能很大,而不仅仅是这个值不存在,就像这个代码示例中一样。

我该怎么处理呢?我认为在这种情况下,我使用的工具不应该将它看作是对misra的不遵从。

谢谢你的建议。

罗尼。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-06 14:18:20

以下代码不应报告任何适用于MISRA C++ 2008规则的警告/错误。因此,这很可能是您的工具的一个问题-或张贴的代码不是受影响的部分。

代码语言:javascript
复制
#include <string>

int exists(std::string v){ (void)v; return 1; }
int* dosomecomputations(std::string v){ (void)v; return NULL; }

int* dosomething(std::string v){
  int* retvalue = NULL;
  if( 0 == exists(v) ){
    throw("error: value doesn't exist");
  }else{
    retvalue = dosomecomputations(v);
  }
  return retvalue;
}

试着用你的MISRA检查器检查上面的片段,看看它是否还在报告什么。如果问题仍然存在,我只会联系工具供应商并询问他有关这个问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20425065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档