You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

所有编译器都支持获取goto标签地址并间接跳转吗?

间接Goto标签跳转的兼容性说明

这种通过&&获取标签地址、再用goto *实现间接跳转的写法不属于标准C语法,是GNU C(GCC)的专属扩展特性,无法被所有编译器支持。

具体兼容性情况

  • 支持的编译器:GCC、Clang(为兼容GCC实现了该扩展)、MinGW等类GNU编译器。
  • 不支持的编译器:严格遵循C标准的编译器(如默认模式下的MSVC,以及部分嵌入式平台专用编译器)。

跨平台替代方案

如果需要实现跨平台的分支跳转逻辑,建议使用标准C支持的方式:

  • 用函数指针数组模拟类似的分支选择;
  • 基于switch-case构建状态机实现流转。

示例代码:

int main() {
    void *labels[] = { &&label1, &&label2 };

    goto *labels[1];

  label1:
    printf("Label 1\n");

  label2:
    printf("Label 2\n");

    return 0;
}

内容的提问来源于stack exchange,提问作者FariyaAchhab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:20:45