21

有人可以告诉我在同一个 C 文件的不同函数中使用相同的 goto 标签是否可以接受?

解释我面临的问题:

function1()
{
    ...

    goto label

    ...

label:
    ...
}

function2()
{
    ...

   goto label;

    ...

label:
    ...
}

现在发生的事情是标签之后的代码被用于清理 malloc'ed 数据。整个事情在function2中崩溃了。我打印了内存。空闲且相同的位置被多次释放。这是因为所有的goto吗?这是对 goto 语句的有效使用吗?

4

2 回答 2

25

标签是本地的,因此您可以在多个函数中使用相同的标签。

关于是否应该使用的问题goto是另一回事,而且不容易回答。简而言之,不要使用goto. 但与所有事情一样(尤其是在编程方面),也有goto可能有用的例外情况。

于 2013-04-25T07:35:59.503 回答
12

正如 Joachim 所说,标签是本地的;但请注意,标签是函数本地的 - 而不是当前块。goto语句不尊重范围,除了全功能范围。

于 2013-04-25T07:43:06.180 回答