ビデオ: 【新しいC言語講座】関数の引数と戻り値 2025
プロトタイプを作成しないとどうなりますか? C言語のプログラミングと同様に、コンパイラやリンカーはエラーメッセージを表示したり、プログラムが正常に動作しません。それは世界の終わりではありません。軍用ロボットをプログラミングしたり、金星フライトラップの新しい種の遺伝子コードを設計するのではなく、そうです。
基本機能。 NO RETURN
#include void prompt(); / *関数プロトタイプ* / int main(){int loop; char input [32];ループ= 0;
演習1 : 基本機能からのソースコードの変更、戻り値なし。3行目のプロトタイプのコメントアウト
<! - 1 - >コンパイラのエラーはすばらしいことですが、正確ではあるが完全に潜在的なものです。メッセージの関連部分のみが記述されていますが、プロンプト '23の警告:衝突するタイプの'プロンプト '13警告:前回の'プロンプト 'の暗黙の宣言がここにありました
最初の警告はソースコードファイルの13行目で発生します。 ()関数を使用しています。コンパイラはプロトタイプなしで関数を使用していることを伝えていますが、エラーメッセージには暗黙的に関数が宣言されています。 > <! - 2 - >
2番目の警告は、プロンプト()関数がプログラム内にあるところで発生します。ソースコードでは、行23にあります。 mpt()はすでに宣言されており(11行目)、2回目の使用が最初のものと衝突する可能性があります。
最後の警告は、13行目で関数が呼び出された場所への参照です。簡潔に言うと、コンパイラはprompt()関数の概要を知らない。あなたのコードはコンパイルされますが、それを実行するのは危険です。
<! - 3 - >
Cコードでプロトタイプが絶対必要であるという結論を導き出すことができます。それは完全に真実ではありません。ソースコードの関数を並べ替えることで、プロトタイピングを避けることができます。関数が使用される前にリストされている限り、プロトタイプは必要ありません。
演習2
: 演習10-3のソースコードを編集します。 3行目でコメントアウトされた関数プロトタイプを削除します。ソースコードの下にあるprompt()関数をカットアンドペースト(移動)します。保存し、ビルドして実行します。 関数プロトタイプを避けると、演習2の解決策が示されます。 関数プロトタイプの回避
#include / *プロンプトの表示* / voidプロンプト(void){printf( "C: DOS>");} int main(){intループ; char input [32];ループ= 0; while(ループ<5){プロンプト(); fgets(input、31、stdin);最初にmain()関数を記述し、その後に他の関数を書くと読みやすくなりますが、プロトタイピングを避けるために自由に関数を記述することができます。そうでない場合は、他のプログラマーもそうするかもしれないことに注意してください。見ても驚かないでください。
Code::ブロックのコンパイラエラーメッセージの後にかっこが付いています。括弧内のコメントは、
switch
または従来のコマンドラインオプションを参照して、特定の警告をチェックできるようにします。たとえば、演習1のエラーメッセージは、次のように完全に読み込まれます。
11警告:暗黙の関数 'prompt'の宣言(-Wimplicit-function-declaration)20警告: 'プロンプト'の衝突タイプ(デフォルトで有効) >
