これは言語に関する特定の質問ではありませんが、プログラミング全般に関する質問です。この質問は、最近C ++コースで学んだ「関数プロトタイプ」について友人と議論を始めた後に出されました。プロトタイプはコードの最初に作成する必要がある関数ヘッダーであるため、コンパイラーは実行時に実際の関数に到達する前にスペースを割り当てることを彼に伝えました。次に、関数プロトタイプを利用しない他のプログラミング言語(javaやpythonなど)が実際にC ++と同様のシステムを持っているかどうかについて、とりとめのない話を始めました。ユーザーに作成してもらいます。
それで、私たちは知りたいのですが、結局のところ、関数プロトタイプとは何ですか?それらはC / C ++でのみ説明責任がありますか、それとも他のプログラミング言語がそれらを利用していますか?そして、それは私が将来のプログラマーとしてもっと発展させる必要があるものですか?助けてくれてありがとう!
CおよびC ++に関して、「プロトタイプ」という単語は特定の宣言構文を指します。
Cの初期のバージョンでは、関数定義は次のように記述されていました。
int func( arg1, arg2, arg3 ) // no types in argument list, just identifiers
int arg1;
double arg2;
char *arg3;
{
// function body
}
と宣言は次のように書かれました
int func( ); // no argument list
関数の引数リストには識別子のみが含まれ、タイプ情報は含まれていませんでした。これは個別に提供されました。関数宣言には引数は含まれず、戻り値の型のみが含まれていました。
C ++が導入され、Cは後にプロトタイプ構文の概念を採用しました。この概念では、タイプ情報が両方の定義のパラメーターリストに含まれています。
int func( int arg1, double arg2, char *arg3 )
{
// function body
}
と宣言
int func( int, double, char * );
これにより、コンパイラーは、実行時まで問題があるかどうかを確認するのではなく、関数呼び出しの引数の数とタイプをチェックし、それらが一致しない場合は診断を発行できました。
古いスタイルの関数宣言と定義構文は引き続きサポートされていますが、新しいコード開発には使用しないでください。プロトタイプ構文は標準ではなく標準であるため、「プロトタイプ」という言葉は冗長になりつつあります。例外。
Fortran、Pascal、Adaなどの静的に型付けされた言語にはすべて個別の関数宣言がありますが、それらの宣言をプロトタイプとは呼びません。また、Cの場合、「プロトタイプ」とは、それ自体の宣言だけでなく、特定のスタイルの関数宣言と定義を指します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加