回答(11件)
標準インクルードディレクトリにあるstdio.hというファイルの内容が、 あたかもここに書かれていると思ってコンパイルしてくれ というコンパイラの中のプリプロセッサに対する命令です。
この回答はいかがでしたか? リアクションしてみよう
#include <stdio.h>はC言語の標準ライブラリであるstdio.hをブログラムに含む(include)ということです。 stdioとはstandard input output(標準入出力)の略で、stdio.hの中にはC言語の標準入出力の関数が定義されています。 stdio.hをブログラムファイルに含むことで標準入出力関数を呼び出すことができるようになります。 最初のうちは「外部ファイルをプログラムに追加する」と覚えればいいです
>#include <stdio.h>・・ってどういう意味か → 1.意味 プリプロセッサにより "stdio.h" という名前のヘッダファイルの内容がその場に挿入される。 2.目的 stdio.h は標準入出力関数群に関するプロトタイプ宣言/マクロ定義情報を含んでおり、コンパイラはそれを読み込むことで、関数名・関数型・引数・戻り値、及び、マクロ定義などに関して使用方法に誤りがないかを適切に診断できるようになる。 3.(コンパイル&リンク&実行する上で)必須か 少なくとも gcc(C99) ではstdio.hは必須ではない。該当行が無い状態でもコンパイル&リンク&実行は出来る。 ※コンパイル時に警告が出る。リンク時は関数名が無いときはエラー ※安全性・可読性の観点から、教育や実務の現場では「必須」扱いが一般的 4.サンプル 添付する参考コードをコンパイルすると「#include <stdio.h>が無いと怒られますが、あくまでも『警告(warning:)』です。」 ~~~ [参考] ~~~ //main.c int main(void){ int n; printf("整数> "); scanf("%d",&n); printf("貴方が入力した整数は %d です。",n); } ~~~ [コンパイル] ~~~ >gcc -o main.exe main.c main.c: In function 'main': main.c:4:5: warning: implicit declaration of function 'printf' [-Wimplicit-function-declaration] 4 | printf(" ^~~~~~ main.c:4:5: warning: incompatible implicit declaration of built-in function 'printf' main.c:1:1: note: include '<stdio.h>' or provide a declaration of 'printf' +++ |+#include <stdio.h> 1 | //main.c main.c:5:5: warning: implicit declaration of function 'scanf' [-Wimplicit-function-declaration] 5 | scanf("%d",&n); | ^~~~~ main.c:5:5: warning: incompatible implicit declaration of built-in function 'scanf' main.c:5:5: note: include '<stdio.h>' or provide a declaration of 'scanf' ~~~ [実行] ~~~ >.\main.exe 整数> 1234 貴方が入力した整数は 1234 です。 ━
#includeは次に書かれたファイル名のファイルの中身をここに入れてコンパイルしてねというお願いです。 ("ファイル名"と<ファイル名">ではファイルを探しに行く先にちょっとした違いがありますが) で、なんだよそれ!となりますが、たとえば int abc() {return 1;} int main(int argc, char *argv[]) { a=abc(); printf("%d\n",a); } なんで具合にしてコンパイルするとき、abc()はコンパイルする時に見つかるのでいいですが、printf()なんて言う関数はこのファイルの中に無いよ!ってことでエラーになってしまいます。 ここは、プログラマが extern int printf(char *f ,...); なんて具合に宣言して、「他のファイルにあるよ」と教えてやらないといけないのですね。 ところが、これがたくさんあると毎回そんなものを書くのは著しく面倒くさいし、書き間違えることもある。 ってことで、よく使う宣言などはまとめて一つのファイルにして、みんなで共通で使えば便利だねとなったのですね。 で、C言語の偉い人たちが集まって標準化を図ったわけです。ファイル名とその中に納める関数や定数などを決めたものがいろいろできたのですが、その中の一つがstdio.hというわけです。 stdioはstandard I/Oという意味合いで標準入出力、つまりキーボードや画面への文字表示などの基本的な入出力に関係するものがまとめられています。
printf 関数や scanf 関数などのよく使う関数や定数の定義を stdio.h というファイルから読み込む、という意味の(コンパイラに対する)命令です。 ちなみに stdio とは standard I/O (標準入出力)という意味で、表示やキー入力など一般的な入出力に使う定義をまとめています。 逆に言うと printf や scanf などの標準的な定義を使う必要がないプログラムであればこの #include <stdio.h> は不要です。 ただ、プログラミング学習の当初は printf や scanf などを非常に便利に使うため、当たり前のように付いているだけです。