簡體   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