ホームページ > バックエンド開発 > C++ > `main()` は本当に C プログラムの絶対的な始まりを示しているのでしょうか?

`main()` は本当に C プログラムの絶対的な始まりを示しているのでしょうか?

Linda Hamilton
リリース: 2024-12-13 22:45:20
オリジナル
752 人が閲覧しました

Does `main()` Truly Mark the Absolute Beginning of a C   Program?

C の絶対開始として Main() が使用されるという誤解

一般的な考えに反して、セクション $3.6.1/ の C 標準1 では、「プログラムには、プログラムの開始点として指定される 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_ret を実行します。この実行順序にもかかわらず、user_main() は、標準で定義されているプログラムの真の「開始」とは見なされません。

C 標準での「開始」の定義

コード コンプライアンスへの影響

この解釈に照らして、指定されたコード スニペットは、次のコードに完全に準拠しています。 C スタンダード。 user_main() は main() より前に実行されますが、プログラムの「開始」は main() が呼び出された時点のままです。

結論

そう思われるかもしれませんが、 main() が C プログラムの絶対的な開始であることは直感的ですが、標準では異なる定義が採用されています。これは、その後の実行と仕様を目的として、プログラムが「開始」される指定ポイントとして main() を確立します。

以上が`main()` は本当に C プログラムの絶対的な始まりを示しているのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート