1

我想编写一个 C 程序来实现include预处理器的功能。

例子:

在 header.h 我有这个代码:

char *test (void);

在program.c中:

int x;
#include "header.h"
int
main (void)
{
    puts (test ());
}

输入是program.c

输出必须是:

int x;
char *test (void);
int
main (void)
{
    puts (test ());
}

我怎样才能做到这一点?

4

3 回答 3

0

你可以运行 gcc -E "你的源文件",然后过滤包含 "#" 的行,左边是你想要的,宏被它的真实形式替换。

例如:

gcc -E hello.c|sed '/# .,$/d' > a.c

ac 是你想要的文件。

于 2012-06-11T06:53:23.367 回答
0

您需要逐行读取输入文件。检查该行是否以#include 开头(带有可选的前导空格)。如果没有,请打印您已阅读的行。如果是这样,请打开指定的文件,并在其上运行相同的算法(以处理辅助#includes)。

于 2012-06-11T04:59:13.823 回答
0

当使用 gcc
gcc -E -P program.c


cpp -P program.c

当使用 Visual c
cl /EP program.c

于 2012-06-11T11:50:03.690 回答