从shell或类shell程序调用预处理器

从shell或类shell程序调用预处理器,shell,command,preprocessor,patch,Shell,Command,Preprocessor,Patch,正如标题中提到的,我想从shell调用预处理器 让我澄清一下: 假设我必须为Linux中的命令patch调用预处理器,比如: patch -p1 -D `"{what and how should i write here }"` < patch.patch patch-p1-D`{我应该在这里写什么和如何写}`修补程序 $patch-DPRINTF_TO_put-i patch-详细 隐马尔可夫模型。。。在我看来,这是一个统一的差异。。。 在此之前的案文是: -------------

正如标题中提到的,我想从shell调用预处理器

让我澄清一下: 假设我必须为Linux中的命令patch调用预处理器,比如:

patch -p1 -D `"{what and how should i write here }"` < patch.patch
patch-p1-D`{我应该在这里写什么和如何写}`
Patch命令有一个选项
-D
,我可以在其中定义预处理器(据我所知)。我试着在谷歌上搜索,但只有一个我不能正确理解。 请给我举个例子(或适当的参考资料)

  • 任何命令的-D选项都可以写入哪些内容
  • 所有命令的构造是否相同?不同命令的构造是否不同
  • 输入变量可以是什么
    patch
    -D
    选项意味着对补丁文件所做的更改将被
    #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;
    }
    $
    
    $cat file-1.c
    #包括
    内部主(空)
    {
    printf(“Hello world\n”);
    返回0;
    }
    $cat file-2.c
    #包括
    内部主(空)
    {
    puts(“你好世界”);
    返回0;
    }
    $diff-u file-1.c file-2.c>修补程序
    $patch-DPRINTF_TO_put-i patch-详细
    隐马尔可夫模型。。。在我看来,这是一个统一的差异。。。
    在此之前的案文是:
    --------------------------
    |---文件-1.c 2013-02-01 00:33:01.000000000-0800
    |+++文件-2.c 2013-02-01 00:33:17.000000000-0800
    --------------------------
    正在使用计划A修补文件file-1.c。。。
    大块头1在2岁时成功了。
    完成
    $file-1.c
    #包括
    内部主(空)
    {
    #ifndef PRINTF_至_PUTS
    printf(“Hello world\n”);
    #否则
    puts(“你好世界”);
    #恩迪夫
    返回0;
    }
    $
    
    因此,要回答您的问题:

  • 您应该在
    补丁
    命令行的
    -D
    之后放置一个有效的C标识符
  • 不同的命令对任何给定的选项字母应用不同的含义。您可以在上找到有关选项的常见解释的信息,但是只有52个字母(单字母)选项,而且不同命令的参数的含义也有很多不同
  • 我不知道你这是什么意思

  • 所有这些都不会从命令行调用C预处理器。如果需要这样做,请在系统上查找程序
    cpp
    。如果你在任何地方都找不到
    cpp
    ,你可能会调用
    gcc-E

    你是什么意思?使用
    -D
    作为选项的任何其他命令?