代码之家  ›  专栏  ›  技术社区  ›  Galaxy

什么是间接goto语句?

  •  5
  • Galaxy  · 技术社区  · 5 年前

    在ClangAPI中,有一个 GotoStmt IndirectGotoStmt . 关于这两种转到状态之间的区别,几乎没有什么解释。我知道这是什么 goto label; ? 我想知道C++ C/C++代码中的内容,不一定只是CLANG。在语法上,有一个

    编辑:下面的问题很有趣。

    Can you make a computed goto in C++

    1 回复  |  直到 5 年前
        1
  •  8
  •   Yakov Galka    5 年前

    有一个GNU扩展,它允许获取标签的地址,存储它以供以后使用,然后 goto 那地址以后再说。看到了吗 https://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html 详情。例子:

        void *ptr;
    
        if(...)
            ptr = &&foo;
        else
            ptr = &&bar;
    
        /* ... */
        goto *ptr;
    
    foo:
        /* ... */
    
    bar:
        /* ... */