今天在编译 C++ 的时候出现了这个错误。代码里有 goto 这个恶心的东西:
[lineno]: error: jump to label ‘...’ [-fpermissive]
[lineno]: error: from here [-fpermissive]
[lineno]: error: crosses initialization of ‘...’
于是在 stackoverflow [1] 上查到了相应的原因,简单归结为两点:
1) goto 不能跨作用域使用;
2) goto 不能使用在任何同作用域变量声明之前。
当然,还有永恒不变的真理:
永远不要用 goto
[1] Statement goto can not cross pointer definition?. Stackoverflow. http://stackoverflow.com/questions/14274225/statement-goto-can-not-cross-pointer-definition