ホームページ  >  記事  >  バックエンド開発  >  C++ コンパイル エラー: 関数は void を返しますが、return ステートメントがあります。解決方法は?

C++ コンパイル エラー: 関数は void を返しますが、return ステートメントがあります。解決方法は?

WBOY
WBOYオリジナル
2023-08-22 13:01:032858ブラウズ

C++ コンパイル エラー: 関数は void を返しますが、return ステートメントがあります。解決方法は?

C プログラミングでは、関数の宣言と定義の戻り値の型が void であるにもかかわらず、関数本体に return 文が存在するという問題に遭遇することがあります。 void 関数には return ステートメントを使用できないため、コンパイル エラーが発生します。では、この問題をどうやって解決すればよいでしょうか?この記事ではそれについて詳しく説明します。

まず、このエラーのサンプル コードを見てみましょう:

void func()
{
    // ...
    return 1;
    // ...
}

このコードでは、戻り値の型が void の関数 func を定義します。ただし、関数本体内では、戻り値 1 の return ステートメントが使用されます。この場合、コンパイラはコードを渡すことができず、エラーを報告します。

error: return-statement with a value in function returning 'void' [-Werror,-Wreturn-type]

このエラーは、戻り値の型が void の関数では return ステートメントを使用できないことを示します。

それでは、どうやって解決すればいいのでしょうか?実際には非常に簡単で、return ステートメントから戻り値を削除するだけです。変更されたコードは次のとおりです。

void func()
{
    // ...
    return;
    // ...
}

ここで、return 1 を return に変更します。これは、値が返されないことを意味します。このように、関数は戻り値の型が void であるという要件を満たしており、コンパイラはそれを正常に渡すことができます。

この問題は、return ステートメントに加えて、他の場所でも発生する可能性があります。たとえば、関数内で戻り値の型が void のローカル変数を定義し、関数内で return ステートメントを使用してローカル変数の値を返す場合も、コンパイル エラーが発生します。この場合、ローカル変数の戻り値の型を別の型に変更する必要があります。

さらに、C 11 で導入された auto キーワードを使用して関数の戻り値の型を推測する、より良い解決策があります。これにより、戻り値の型を手動で指定する必要がなくなります。例:

auto func()
{
    // ...
    return 1;
    // ...
}

この例では、auto キーワードを使用して関数の戻り値の型を推測します。関数内では return 1 ステートメントが整数値を返すために使用されているため、コンパイラは戻り値の型を int に推測します。

つまり、C の記述で void を返す関数に遭遇したが、return ステートメントにエラーがある場合、return ステートメントの値を削除するか、auto キーワードを使用して確実に実行することで、この問題を解決できます。関数が void 型の戻り値要件に準拠していること。

以上がC++ コンパイル エラー: 関数は void を返しますが、return ステートメントがあります。解決方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。