インクルード

printf()関数のような標準ライブラリを利用する場合、関数の情報が記載されているヘッダファイルを、ソースファイルに組み込む必要があります。関数が書かれているヘッダファイルの名前も標準規格で定められています。printf()関数を使うにはstdio.hヘッダファイルが必要になります。ヘッダファイルは、次のようにソースファイルに組み込むことができます。

#include ディレクティブ

#include <path-spec>

path-specに、読み込むヘッダファイルを指定します。

#から始まるこのコードは、プリプロセッサディレクティブと呼ばれる特殊な命令で、コンパイルする直前にプリプロセッサと呼ばれるプログラムに処理を指示します。プリプロセッサの役割は、ソースコードをテキストレベルで展開し、他のファイルを読み込んで任意の場所に組み込んだり、あらかじめ定められたテキストの変換などを行ったりします。実際にコンパイルされるソースコードは、プリプロセッサによって展開されたテキストということになります。

#includeは、指定したファイルをコンパイル前に読み込むことを表します。コンパイル時には、プリプロセッサによって#includeが書かれていた場所に、指定されたファイルの内容がそのまま挿入されています。この#includeによるファイルの読み込みをインクルードと呼びます。

printf()関数のような標準入出力ライブラリを利用する場合は stdio.h ファイルを指定します。多くのプログラムは、ソースファイルの先頭に次のようなコードが書かれます。

#include <stdio.h>

これは、stdio.hファイルの内容を、ソースファイルに取り入れることを表しています。

では、これまでの内容をまとめてprintf()関数で、画面に文字列を表示するプログラムを作ってみましょう。

Sample01

#include <stdio.h>

int main(void) {
    printf("Kitty on your lap\n");
    return 0;
}

実行結果

Kitty on your lap

Samople01の実行結果

printf()関数に渡す文字列は、なんでもかまいません。日本語をサポートしているシステムであれば、日本語も正しく表示できます。文字列の末尾にある\nは、改行を表しています。\から始まる、この特別な表記法をエスケープシーケンスと呼び、改行やタブなど、視覚化できない特殊な文字を表すことができます。

main()関数の中には、returnが実行されるまでの間であれば自由にコードを書くことができます。printf()関数を何度呼び出しても構いません。

Sample02

#include <stdio.h>

int main(void) {
    printf("The best way to predict the future is to invent it.\n");
    printf("未来を予測する最良の方法は、それを発明することだ。\n");
    printf("Alan C. Kay\n");
    return 0;
}

実行結果

The best way to predict the future is to invent it.
未来を予測する最良の方法は、それを発明することだ。
Alan C. Kay

Sample02の実行結果

このように、一度作られた関数は、任意の場所から何度でも呼び出すことができます。私たち一般の開発者は、printf()関数がどのようにシステムと通信して文字列を表示しているかを理解する必要はありません。printf()関数に文字列を渡せば、後の仕事はprintf()関数が行ってくれます。