是否可以“返回return语句”?

时间:2019-07-08 20:19:44

标签: c++

是否可以用C ++返回return语句或执行具有类似功能的事情?

例如,如果代码中有多个函数将指针作为输入,并且每个函数检查指针是否为nullptr,这将很方便。如果它是nullptr,则函数应停止执行任何操作并返回0或适用于其类型的任何内容。

inputPtr是赋予返回int*的函数的int。而不是像

    ...
    if(inputPtr == nullptr) {
        return 0;
    }
    ...

每次都有很酷

    ...
    checkNull(inputPtr);
    ...

或类似的东西。 在这个示例中,它当然还不错,但是可以想象一个更复杂的测试功能。

从概念上讲,这似乎很奇怪。但是通常有一种方法可以防止重复。

3 个答案:

答案 0 :(得分:7)

否,这是不可能的,并且在任何情况下隐藏控制流都可能被认为是一个坏主意。如果您必须编写检查功能,那么使返回布尔值很简单,那么:

if(checkNull(inputPtr)) return 0 ;

答案 1 :(得分:1)

不幸的是,这是只有在C ++中才能用宏解决的很少的事情之一。

也就是说,您在代码中确实不能忍受额外的if,并且您拥有广泛的合同,该合同允许将nullptr作为参数。

我个人不会使用宏,而只会使用清晰的if语句。

答案 2 :(得分:1)

我认为基本上有三个选择:

  1. 例外
  2. gsl::not_null

在这里您可以找到很好的帖子。 https://www.bfilipek.com/2017/10/notnull.html (当然,这不是完美的解决方案,但可以为您节省一些时间:))

相关问题