2017-07-04 179 views
1

我知道gcc做到了。但我想要一個可以這樣做的C程序。該程序應該接受一個.c文件,並執行預處理操作並生成.i文件 供參考:這是一個項目,分配給他的大學我的親屬。從.c文件生成.i文件

+1

爲什麼?你想解決什麼問題?爲什麼你不能簡單地使用'gcc -E'?或者你想實現你自己的預處理器嗎? –

+0

GCC是一個C程序...所以... – StoryTeller

+3

@StoryTeller不,這是一個(驚喜)C++程序。雖然舊版本是C. –

回答

3

使用命令cc -E file.c -o file.i這會給你預處理文件。欲瞭解更多信息,請參閱man頁面。

只需再次閱讀您的問題。你想編寫程序,創建該文件。 那麼你必須爲此做很多工作。首先,你需要閱讀#include#define和條件包含(#if, #elif #endif),然後你需要檢測< >" ",閱讀這些符號中的文件。那麼你必須fopen()這些文件並將其粘貼到.i文件中。

總結起來,這將是很多工作,但這是做到這一點。

編輯它不只是複製過去。讀取頭文件意味着#include裏面現在說你的頭文件是abc.h,那麼你必須搜索可以存在.h文件的所有預定義位置。如果發現你需要fopen()該文件讀取它的內容並將其寫入你的.c文件。另外你必須照顧宏指令和條件包含。相信我,我已經嘗試過了,它的很多工作。但你可以嘗試它會提高你的基本

+0

是的。我想編寫程序..讀取頭文件?意味着我需要將所有從頭文件粘貼到.i文件中? – user2940249

+0

**供參考:這是一個項目,分配給我的親屬在他的大學。**教授可能已經給了一些條件來做這個項目。 –

+0

我不知道任何條件。謝謝你的幫助。這澄清了幾乎一切。 – user2940249

0

如果你不能使用外部程序,如gcc,你必須自己實現C預處理器。整個預處理器在C Programming Language specification的「預處理指令」一節中有描述。或者,如果你不能使用其他程序,但你不想自己實現它,你可以嘗試使用libclang作爲一個庫(儘管如此,你需要C++)。