質問:
以下の C コードには、値を返さない非 void 関数:
static tvec4 Min(const tvec4& a, const tvec4& b, tvec4& out) { tvec3::Min(a,b,out); out.w = min(a.w,b.w); }
なぜコンパイルされるのかエラーはありませんか?
回答:
この動作は、C 11 ドラフト標準のセクション 6.6.3 段落 2 によれば未定義です。値を返す関数は未定義の動作を引き起こします。
コンパイラの警告とエラー:
影響:
未定義の動作は、プログラムのクラッシュなどの予期しない結果を引き起こす可能性があります。未定義の動作のインスタンスを検出して修正するには、-Wall や -Wextra などのコンパイラ オプションを使用することをお勧めします。
以上が値を返さない非 Void C 関数でコンパイラ エラーが発生しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。