1. ホーム
  2. C++

error: label 'xxxxxxx' [-fpermissive] にジャンプします。

2022-02-15 22:34:31

C++では、指定した関数の末尾にジャンプするためにgoto文が使用されます。g++でコンパイルする場合、goto文の後に新しい変数を入れることはできないので、すべてのgoto文の前に変数を宣言する必要があることに注意してください。(VisutalStudio では、この問題はありません)。



#include <iostream>
void Test(int m)
{ <未定義
int i = m;
if (i > 10) goto res;
<スパン int j = i;
を使用します。
std::cout<<"m > 10"<<std::endl;
}
int _tmain()
{ <未定義
テスト(4)です。
は0を返します。
}
この時点でg++でコンパイルすると、以下のようなエラーが報告されます。

root@ubuntu:/home/Temp# g++ -c temp.cpp
temp.cpp: 関数 'void Test(int)' 内にあります。
temp.cpp:12:1: error: jump to label 'res' [-fpermissive].
 resを使用します。
 ^
temp.cpp:7:19: error: ここから [-fpermissive] です。
  if (i > 10) goto res;
                   ^
temp.cpp:10:6: error: 'int j' のクロス初期化
  int j = i;

Testメソッド内のコードは、以下のように変更できます。


void Test(int m)
{

int i = m;

int jです。

<スパン if (i > 10) goto res;
<スパン  j = i;
を使用します。
std::cout<<"m > 10"<<std::endl;
}