繁体   English   中英

在C中实现include预处理程序

[英]implementation of include preprocessor in c

我想编写一个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 ());
}

我怎样才能做到这一点?

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

您可以运行gcc -E“您的源文件”,然后过滤包含“#”的行,左边是您想要的,宏将替换为其实际形式。

例如:

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

ac是您想要的文件。

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

要么
cpp -P程序

使用Visual c时
cl / EP程式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM