Any good idioms for error handling in straight C programs?

后端 未结 12 1515
梦如初夏
梦如初夏 2020-12-23 14:19

Getting back in to some C work.

Many of my functions look like this:

int err = do_something(arg1, arg2, arg3, &result);

With th

12条回答
  •  轮回少年
    2020-12-23 15:08

    Two typical patterns:

    int major_func()
    {
        int err = 0;
    
        if (err = minor_func1()) return err;
        if (err = minor_func2()) return err;
        if (err = minor_func3()) return err;
    
        return 0;
    }
    
    int other_idea()
    {
        int err = minor_func1();
        if (!err)
            err = minor_func2();
        if (!err)
            err = minor_func3();
        return err;            
    }
    
    void main_func()
    {
        int err = major_func();
        if (err)
        {
            show_err();
            return;
        }
        happy_happy_joy_joy();
    
        err = other_idea();
        if (err)
        {
            show_err();
            return;
        }
        happy_happy_joy_joy();
    }
    

提交回复
热议问题