二つのCソースコードをマージするためにdiffを使用することが可能
です.この書式のdiffの出力は,両方のファイルのすべての行を含み
ます.両方のファイルに共通の行は,一回だけ出力されます.差異のある部分は,
Cプリプロセッサの指示語の#ifdef
nameや#ifndef
name,#else
,そして#endif
で分離されています.出力を
コンパイルするとき,マクロnameを定義したり未定義にしたりすることで,
バージョンを選択します.
二つのファイルをマージするために,-D nameや
--ifdef=nameオプションを用いてdiffを使用してく
ださい.引数のnameは,#ifdef
と#ifndef
といった指示語
で使用するCプリプロセッサの識別子です.
例えば,wait (&s)
の文をwaitpid (-1, &s, 0)
に変更し,新旧の
ファイルを--ifdef=HAVE_WAITPIDオプションを用いてマージした場合,
影響する部分のコードは以下のようになるでしょう.
do { #ifndef HAVE_WAITPID if ((w = wait (&s)) < 0 && errno != EINTR) #else /* HAVE_WAITPID */ if ((w = waitpid (-1, &s, 0)) < 0 && errno != EINTR) #endif /* HAVE_WAITPID */ return w; } while (w != child);
次のセクションで説明する,行のグループを使用した書式と,行の書式を使用す ることで,C以外の言語に対する書式を指定することが可能です.