2013-04-23 67 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编译