使用goto的好处

来源:互联网 发布:制作婚礼电子相册软件 编辑:程序博客网 时间:2024/04/29 03:16

虽然被某些人声称已经过时,但是goto语句的等价物还是经常被编译器所使用,具体形式是无条件跳转指令。当一个函数从多个位置退出并且需要做一些通用的清洁工作的时候,goto的好处就显现出来了。

理由是:

-          无条件语句容易理解和跟踪

-         嵌套程度减小

-         可以避免由于修改时忘记更新某个单独的退出点而导致的错误

-         减轻了编译器的工作,无需删除冗余代码;)


int fun(int a)
{
        int result = 0;
        char *buffer = kmalloc(SIZE);

        if (buffer == NULL)
                return -ENOMEM;

        if (condition1) {
                while (loop1) {
                        ...
                }
                result = 1;
                goto out;
        }
        ...
out:
        kfree(buffer);
        return result;
}

原创粉丝点击