34:5: エラー: 制御が非ボイド関数の終わりに達する可能性がある [-Werror,-Wreturn-type] エラー解析
2022-02-11 15:48:09
Nucleus.comでプロジェクトに取り組むと、よくこの問題に遭遇します。VS上では問題なく動くのですが、Nucleus.comに載せると、このような問題が発生します。/solution.h:34:5: error: control may reach end of non-void function [-Werror,-Wreturn-type] とエラーが見つからないことが多く、今日、忘れないように記録するためにエラーに出会いました。
エラー解析
分析する 一般的にこのエラーの最初の数字は、エラーが発生した行を指します。例えば、ここでのヒントは、コードエラーが34行目にあったということなので、投稿されたコードの34行目あたりのエラーを探せばいいのです。
エラーの記録
今日行われた典型的なミスを、次のコードで記録します。
int f(vector
vec)
{
if(!vec.empty())
return vec[0];
}
この関数はVSで実行すると間違いなくエラーフリーです。VSのデバッグで実行すると、コンパイラがエラーをチェックし、問題なく修正するのを助けてくれるからです。しかし、リリース下で実行すると、問題が発生します。この関数では、vecが空の場合、関数は戻り値を持ちませんが、関数は戻り値を持たなければならないので、エラーはこの場所にあります。
正しい修正:判定条件に関係なく、関数の戻り値条件を満たすことができる。
int f(vector
vec)
{
if(!vec.empty())
return vec[0];
else
return 0.
}
関連
-
C++11での移動セマンティクス(std::move)と完全な前進(std::forward)。
-
undefinederror: 'dynamic_cast' の前に unqualified-id を指定する必要があります。
-
C++:ソースファイルを開くことができない問題
-
c++ std::move Principle の実装と使用法のまとめ
-
警告:組み込み関数 'malloc' の互換性のない暗黙の宣言を修正する方法
-
C++ [エラー] 'std::string {aka std::basic_string<char>}' を 'char*' に変換できないエラー
-
C++: エラー C2228: '.str' の左側にはクラス/構造体/結合が必要
-
C++: エラー C2280: 削除された関数を参照しようとしています。
-
C++共通ライブラリ関数一覧
-
C++エラー:不明な型名
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
std::logic_error' のインスタンスを投げた後に呼び出された実行エラー終了 what(): basic_string::_S_const
-
C++プリントベクター
-
gcc/g++ コンパイル時のエラー解析で期待される型指定子の前に
-
C++のコンパイルエラーで修飾子が破棄される [-fpermissive] 。
-
警告を表示します。ISO C++は文字列定数を'char*'に変換することを禁じています[-Write-strings]。
-
sort(...)」への呼び出しに対応する関数がない、エラー
-
一意でないテーブル/エイリアス
-
stoi' の解決策は、Dev-c++ のこのスコープで宣言されていません。
-
ランタイムエラー: 'std::logic_error' のインスタンスを投げた後に terminate が呼び出されました。
-
C++ shared_ptr コンパイルエラー 'shared_ptr' がこのスコープで宣言されていない問題を修正しました。