Visual Studioを使ってC言語・C++でプログラムを書き、コンパイルしたらC1075「一致するトークンが見つかりませんでした」と表示されてコンパイルエラーになってしまうことがあります。
このエラーはプログラムを書き慣れていない初心者の方がやってしまいがちなエラーです。なぜC1075エラーが発生してしまうのか、原因と対処法を見ていきましょう。
C1075エラーが発生する原因
C1075「一致するトークンが見つかりませんでした」が発生する原因は、関数やif文・for文などのブロックを閉じるカッコ「{」が不足しているときに発生するエラーコードです。
例えば以下のコードはfunc関数の綴じカッコを忘れていることが原因でC1075「一致するトークンが見つかりませんでした」が発生しています。
int func();
int main() {
func(5);
func(10);
}
int func(int a){
if(a == 10){
return 1;
}
return 0;
if文やfor文を何重にもネストしていくとカッコの数を間違えてしまいやすいため、タブでインデントして可読性を高めるようにしましょう。
エラー行の見方にも注意
C1075「一致するトークンが見つかりませんでした」エラーが発生する場合、コンパイラが提示するエラー行は閉じカッコを書くべき位置ではなく、閉じカッコが不足している関数の先頭行になります。
例えば先ほど紹介したコードは14行目ではなく8行目がエラーとして報告されます。
閉じカッコが不足している関数の先頭行がエラー行となるので覚えておきましょう。
C1075エラーを起こさないようにする方法
C1075エラーはプログラムの一部をコピーして移動させる際にかなり発生しやすいです。
プログラムをコピーしているを建てる際、for文やif文も一緒にコピーすることが少なくないですが、そのときにif文やfor文などのブロックの閉じカッコをコピーする数を間違えてしまうことがあります。
間違えたままコピーするということは、カッコの数が多い・少ない状態になってしまい、コピー元・コピー先のどちらかでC1075「一致するトークンが見つかりませんでした」が発生します。
ですのでコピーする際はカッコの数をしっかり確認してからコピーするようにしてください。また、下記コードのようにインデントを付けてブロックの始まりと終わりを見やすくしておくのもポイントです。
int func(int a){
if(a >0 ){
if (a > 10) {
int tmp = 0;
for (int i = 0; i < 5; i++) {
tmp += a - i;
}
return tmp;
}
return 1;
}
return 0;
}
上記コードのようにインデントを付けておけばブロックの区切りがわかりやすくなり、カッコ不足が発生したとしてもすぐに気づけるはずです。