【C/C++】C2562「関数は ‘void’ 型として宣言されていますが、値を返しました」の対処法

スペルミスを起こすことなくしっかりプログラムをかけているはずなのに、C2562エラーが起きてコンパイル・ビルドできない問題に遭遇することがあります。

コンパイルエラーが起きているということは何かしらの記述ミスがあり、それを直さなければなりません。

今回はC2562エラーの原因や対処方法について紹介します。

目次から探す

C2562エラーの原因と対処法

C2562「関数は ‘void’ 型として宣言されていますが、値を返しました」の原因は、関数が値を返さないvoid型として宣言されているにも関わらず、return文で値を返してしまっていることで発生しているエラーです。

例えば以下のコードはcheck関数のreturn文でC2562エラーが発生しています。

void check(int a){
	if (a > 100) {
		return 1; //C2562
	}
	return 0;  //C2562
}

void型の関数はいかなる場合においても値を返してはいけない関数なので、return 1;return 0;は間違いなのです。

値を返す関数として実装したい場合は、void型以外の関数にするようにしてください。

エラー行より関数の型を確認するように

C2562エラーは、関数の方が原因であることが多いため、Visual Studioなどで表示されるコンパイルエラーが示すエラー行を見てもなにが間違っているのか分かりづらいです

void check(int a){
	if (a > 100) {
		return 1; //C2562
	}
	return 0;  //C2562
}

例えばこちらのコードだと、1行目ではなく3行目と5行目がエラー行として表示されます。

ですので、C2562エラー「関数は ‘void’ 型として宣言されていますが、値を返しました」が発生したときは、関数の型を真っ先に確認するようにしてください。

ほとんどの場合は関数の型を間違えたままプログラムを書いていたケースですので気をつけましょう。

目次から探す