main()(またはMain())はC、C ++、Java、またはC#、ユーザー定義関数、または組み込み関数ですか?
9 に答える
プログラムを実行するために必要なユーザー定義関数です。コンパイルされた言語でプログラムを実行しようとすると、main
関数が実行されます。たとえば、Java では、クラスに署名の関数がある場合、JVM がそのメソッドpublic static void main(String ... args)
の内容を実行するため、そのクラスを実行できます。main
Java での例:
public class Test {
public static void main(String ... args) {
System.out.println("Hello World");
}
}
...
javac Test.java
...
java Test
「Hello World」がコンソールに出力されます。
組み込みとユーザー定義の意味がわかりません。ユーザー定義関数にプログラムへの真のエントリポイントとしての特権を実際に与える言語はほとんどありません。C++、任意の .NET 言語、および Java にはすべて、ユーザー定義の Main メソッド (またはその言語のエントリポイント メソッドが呼び出されるものは何でも -- .NET では名前を付けることができます) を呼び出す隠し (組み込み) エントリ ポイント メソッドがあります。ただし、C# と VB.NET では強制的に Main と呼ばれます)。
そうです、実質的にすべての言語には、自動的に呼び出されるメソッドの概念があり、このメソッドはユーザー定義のメソッドであり、通常は必須です。しかし、ほぼすべての言語には、ユーザー定義の「エントリポイント」関数を呼び出す前に、プロセスのフレームワークやメモリ管理を実際に設定する組み込みのエントリ ポイント メソッドもあります。
C標準からの引用(強調は私のものです):
5.1.2.1 自立型環境
- 独立した環境 (オペレーティング システムの恩恵を受けずに C プログラムを実行できる環境) では、プログラムの起動時に呼び出される関数の名前と型は実装定義です。節 4 で必要とされる最小限のセット以外の、独立したプログラムで利用可能なライブラリ機能は、実装によって定義されます。
main()
、独立した環境では、ユーザー定義の関数です。
これは必須のユーザー定義関数 (実行可能ファイルのエントリ ポイント) です...
標準が実装されていないという意味で、それはどの言語にも「組み込まれている」わけではありません。
C/C++/Java の場合、これは特別なプロパティを持つ関数です。つまり、すべての静的セットアップが完了した後、プログラムの開始時に呼び出される関数です。たとえば、C プログラム全体の実行パスは次のとおりです。
初期化コードを実行する
電話
main()
出口。
そのため、標準の宣言があります(コマンドラインから渡されたパラメーターの数+「文字列」の配列-ただし、言語はそれを実装しています-コマンドラインからの実際の引数です)
C / C ++では、これは標準であるため、組み込みで再構成されています。
Java、わからない、経験なし
C#-クラスの一部であるため、ユーザーが定義します。
これらはすべてあなたが定義します-あなたはそれに何をすべきかを指示します。
これは、言語のランタイム ライブラリによって呼び出されるユーザー定義関数です。たとえば、C ランタイム ライブラリは、オペレーティング システムからコマンド ライン引数と場合によっては環境変数を取得し、それらを main() 関数に渡します。
異なる言語のランタイムは、通常、何らかの形で同じ操作を実行し、呼び出そうとする関数が存在しない場合、何らかのエラーをスローします。
その宣言は組み込みです。その定義はユーザーが提供するか、場合によっては他のエントリ ポイントを持つアプリケーション フレームワークによって提供されます。または、ほとんどのイベント駆動型 GUI フレームワークの場合、単一のユーザー定義のエントリ ポイントはありません。
Java では、main(String[] args) は慣例によりアプリケーションのエントリ ポイントです (C++ プログラマを快適にするため)。アプレットまたはサーブレットの場合、コードの呼び出しは別の方法で行われます。jar にはこれらのエントリ ポイントのいずれかが含まれる場合も含まれない場合もあることに注意してください。各クラスには main が含まれている場合があるため、必要に応じて特定の jar をさまざまな方法でアプリケーションとして呼び出すことができます。