C関数の暗黙的なint戻り値 質問する

C関数の暗黙的なint戻り値 質問する

グーグルで検索してみましたが、この簡単な質問の答えが見つからないようです。

レガシーコードベース(最近Linuxに移植され、ゆっくりと新しいコンパイラにアップデート中)で作業していますが、

int myfunction(...)
{
// no return...
}

関数の暗黙的な戻り値の型は int であることはわかっていますが、戻り値が指定されていない場合の暗黙的な戻り値の値はいくらでしょうか。テストして 0 を取得しましたが、これは gcc の場合のみです。これはコンパイラ固有のものですか、それとも標準で 0 に定義されていますか?

編集: 2017 年 12 月、より新しいバージョンの標準を参照して、承認された回答を調整しました。

ベストアンサー1

新約聖書に引用されている '89 規格より:

関数の最後から流れ出るものは、式のない return と同等です。どちらの場合も、戻り値は未定義です。

その標準は通常、既存の実装の実際の動作を表現します。

おすすめ記事