【问题标题】:What uses do reading label address have?阅读标签地址有什么用?
【发布时间】:2021-11-30 16:45:30
【问题描述】:

我想知道var = &&label 可以用来做什么,即:读取标签的地址?我只能说,通过获取这样的地址然后使用它进行跳转,在块的开头不需要任何__label__ mylabel;(通常需要能够跳转到这样的标签)。

【问题讨论】:

    标签: c gcc label memory-address goto


    【解决方案1】:

    使用&& 获取标签的地址是 gcc 扩展。它允许您使用包含标签地址的变量作为goto 的目标。例如:

    void *p = &&l0;
    if (x==1) {
        p = &&l1;
    } else if (x==2) {
        p = &&l2;
    }
    goto *p;
    
    l0:
    printf("at l0\n");
    l1:
    printf("at l1\n");
    l2:
    printf("at l2\n");
    

    您可以在gcc documentation 中阅读有关此功能的更多详细信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 2017-12-22
      相关资源
      最近更新 更多