ホームページ >バックエンド開発 >C++ >`main()` は本当に C プログラムで最初に実行されるコードですか?

`main()` は本当に C プログラムで最初に実行されるコードですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-07 05:33:15858ブラウズ

Is `main()` Really the First Code Executed in a C   Program?

Main() は本当に C プログラムの開始点ですか?

C 標準では、main() をプログラムの排他的な開始点として定義しています。プログラム: 「プログラムには、プログラムの開始点として指定される main と呼ばれるグローバル関数が含まれます。」

ただし、以下のコードはこの定義と矛盾しているようです:

int square(int i) { return i*i; }
int user_main()
{ 
    for ( int i = 0 ; i < 10 ; ++i )
           std::cout << square(i) << endl;
    return 0;
}
int main_ret= user_main();
int main() 
{
        return main_ret;
}

驚くべきことに、このコードは、最初の実行ポイントであるはずの main() に入る前に user_main() 関数を実行します。さらに、コードはエラーや警告なしでコンパイルされます。

プログラムの「開始」の定義

「プログラムの開始」という用語を正しく解釈することが重要です。標準では、開始を、必ずしも最初のコードの実行時ではなく、プログラムが開始するとみなされる時点として定義しています。

この例では、プログラムは main() で始まりますが、これはコードが存在しないことを意味するものではありません。事前に実行します。実際には、通常、実質的なコードは main() よりも前に、特に初期化中に実行されます。

標準準拠

コードの実行順序は通常ではありませんが、コードは完全に準拠しています。標準。定義によれば、user_main() の方が先に実行されますが、プログラムの開始は main() になります。実行順序によって、プログラムの開始が main() 関数として定義されるという事実は変わりません。

したがって、指定されたコードは標準に準拠しており、開始の標準の定義が無効になることはありません。プログラムを main() として実行します。

以上が`main()` は本当に C プログラムで最初に実行されるコードですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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