-D
オプション toは、パッチを適用したファイルに加えられた変更が/ /patch
で囲まれることを意味します。これは、オプションの引数として指定したものです。#ifndef X
#else
#endif
X
-D
例えば:
$ cat file-1.c
#include <stdio.h>
int main(void)
{
printf("Hello world\n");
return 0;
}
$ cat file-2.c
#include <stdio.h>
int main(void)
{
puts("Hello world");
return 0;
}
$ diff -u file-1.c file-2.c > patch
$ patch -DPRINTF_TO_PUTS -i patch --verbose
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- file-1.c 2013-02-01 00:33:01.000000000 -0800
|+++ file-2.c 2013-02-01 00:33:17.000000000 -0800
--------------------------
Patching file file-1.c using Plan A...
Hunk #1 succeeded at 2.
done
$ file-1.c
#include <stdio.h>
int main(void)
{
#ifndef PRINTF_TO_PUTS
printf("Hello world\n");
#else
puts("Hello world");
#endif
return 0;
}
$
だから、あなたの質問に答えるために:
- コマンド ライン
-D
の後に有効な C 識別子を入力する必要があります。patch
- コマンドが異なれば、特定のオプション文字に異なる意味が適用されます。The Art of Unix Programmingでオプションの一般的な解釈に関する情報を見つけることができますが、アルファベット (1 文字) のオプションは 52 個しかなく、さまざまなコマンドの引数にはそれよりもはるかに多くの異なる意味があります。
- これが何を意味するのかわかりません。
これはどれも、コマンド ラインから C プリプロセッサを呼び出すものではありません。それを行う必要がある場合は、システム上のプログラムを探してcpp
ください。どこにも見つからない場合は、代わりにcpp
呼び出してしまう可能性があります。gcc -E