Is returning void valid code?

后端 未结 4 1534
时光说笑
时光说笑 2020-12-01 13:29

I found out that the following code gets accepted by Visual C++ 2008 and GCC 4.3 compilers:

void foo()
{

}

void bar()
{
  return foo();
}

4条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-12-01 14:21

    Valid indeed. I use it often for input validation macros:

    #define ASSERT_AND_RETURN_IF_NULL(p,r) if (!p) { assert(p && "#p must not be null"); return r; }
    
    bool func1(void* p) {
      ASSERT_AND_RETURN_IF_NULL(p, false);
      ...
    }
    
    void func2(void* p) {
      ASSERT_AND_RETURN_IF_NULL(p, void());
      ...
    }
    

提交回复
热议问题