需求

今天修改了几行程序后,编译不通过,报错为 crosses initialization of.

解决

经过搜索和尝试,发现是 goto 语句引起的,但是也不单纯是 goto 引起的。主要是同时达到了下面两个条件。

  • 变量定义并没有都放在函数的开始。
  • 使用 goto 的语句下面,还有新定义的变量。

所以,编译器担心 goto 跳过这些新定义的变量可能导致程序执行的结果有问题,就报错了。解决也很简单,把使用 goto 语句下面新定义的变量移动到上面就可以了。

参考

goto语句引起的crosses initialization of XXX