22

私はCプログラミングが初めてで、「Hello world」スタイルの簡単なプログラムをコーディングしていました。

これらのプログラムのすべてで、#include<stdio.h>私は一番上に入れましたが、これが正確に何を意味するのかわかりません. ググってみたらstdio.hがプリプロセッサ用のコマンドが書かれたファイルだったんだけど、プリプロセッサって何?私は、コードを書くときにそれをコンパイルすると、コードが「コンピューター」が読み取れる形式に変換され、実行できるようになると考えていました。誰かがこのコマンドの使用法を説明できますか?

4

4 に答える 4

38

ファイルを探し、このステートメントstdio.hの場所に効果的にコピーして貼り付けます。このファイルには、 、 、 ...#includeなどの関数のいわゆる関数プロトタイプが含まれているため、コンパイラはそれらのパラメーターと戻り値が何であるかを認識できます。printf()scanf()

于 2013-09-30T07:08:00.383 に答える
14

おそらく最も簡単な説明は、コードがプログラム自体の一部ではない多くの関数をプログラムが呼び出しまたは使用しているということです。たとえば、何かを印刷するためにコードに「printf」を記述した場合、コンパイラはその呼び出しをどう処理するかを知りません。

stdio.h は、その printf の情報が存在する場所です。

アップデート:

むしろ、printf 関数のプロトタイプ(名前、戻り値の型、およびパラメーター) は stdio.h にあります。コンパイル段階で必要なのはこれだけです。printf の実際のコードは、コンパイル後に行われるリンク段階に含まれます。

include ステートメントは基本的に、実際のコンパイルの前にすべての関数プロトタイプを挿入します。したがって、名前のプリプロセッサ。

更新 2:

質問はインクルードステートメントに焦点を当てていたので(そしてOPは関数の定義を自分で書くことについても尋ねたので、別の重要な側面はそれが次のように書かれているかどうかです(角括弧に注意してください)

#include <stdio.h>

プリプロセッサは、これが標準ライブラリ ヘッダーであると想定し、最初にコンパイラがインストールされているシステム フォルダを調べます。

代わりに、プログラマーが自分で関数を定義し、現在の作業ディレクトリに .h ファイルを配置する場合、彼は使用します (二重引用符に注意してください)。

#include "stdio.h"

以下はそれを示しており、動作はすべてのプラットフォームで移植可能です。

于 2013-09-30T07:07:53.587 に答える