2013-04-23 75 views
0

我知道你可以通過在gcc中使用-include編譯器標誌將一個頭文件放在文件的頂部,但是有可能在頭尾包含頭文件文件的其他頭文件聲明。因此,例如,我在C源文件中有以下聲明。如何讓編譯器在源文件中放置一個頭文件

#include "a.h" 
#include "b.h" 

我想它,成爲

#include "a.h" 
#include "b.h" 
#include "inserted.h" 

而不是

#include "inserted.h" 
#include "a.h" 
#include "b.h" 
+3

爲什麼你(曾經)想要這樣做? – unwind 2013-04-23 14:20:27

+0

@unwind - 使源文件保持不變。 – MetallicPriest 2013-04-23 14:23:42

+0

爲什麼你需要不改變源文件?如何添加'#include「inserted.h」'不能解決你的問題?見http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – 2013-04-23 14:38:28

回答

2

使用

-include a.h -include b.h -include inserted.h 

添加頁眉保護所有*.h文件(其中應該有無論如何... ;-)。

0

你不能完全按照你的要求。沒有辦法告訴編譯器在文件的隨機點插入頭文件。但也許你可以接近一些。

首先要在inserted.h所有聲明宏:

#define DECLARE_INSERTED_H \ 
    int gFoo = 0;   \ 
    void functionBar(); \ 

然後在您的C文件:

#include a.h 
#include b.h 

#ifndef DECLARE_INSERTED_H 
#define DECLARE_INSERTED_H 
#endif // !DECLARE_INSERTED_H 

DECLARE_INSERTED_H 

然後用-i inserted.h編譯