C 言語
ヘッダーファイル
- ライブラリ内の関数を使うための宣言や定義が、ライブラリの機能や用途ごとにまとめて記述されている
- 外部変数宣言と関数プロトタイプ宣言をまとめたもの
- 目的の変数や関数が様々なソースから利用される場合には、別のファイルに記載しておき、それを利用するようにする
#include
宣言
コインパイル
- 2 段階に別れてコンパイルが行われる
プリプロセサ指令を含む C のソースコード
プリプロセサ指令
#include
や#define
のような予約後
- 例
プリプロセサは #include 指令の個所に base.h を取り込み、#include 指令はその時点で削除される
取り込んだ base.h には #define 指令が書かれているので、プリプロセサはそれに従ってソース中の文字列を置き換え、#define 指令を削除
すべてのプリプロセサ指令を処理し終えると、プリプロセサからコンパイラにソースが渡される
a. base.h
int test(int, int): #define NULL 0 #define USO 0 #define HONTO !USO
b. sample.c
#include <base.h> int main(void) { int num: (snip) }
c. #include を処理した直後のソース
int test(int, int): #define NULL 0 #define USO 0 #define HONTO !USO int main(void) { int num: (snip) }
上記の前処理が済んだ C のソースコード
ゾンビ発生サンプル
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main ()
{
pid_t child_pid;
child_pid = fork ();
if (child_pid > 0) {
sleep (60);
}
else {
exit (0);
}
return 0;
}