2015-11-07 123 views
0

我想声明函数我稍后在头文件中的主代码中使用。我做了一个头文件,我在其中声明了函数原语,一个文件定义了函数,还有一个包含实际代码的主文件。该结构可以看出如下(我会说明问题尽可能通用没有我的特定代码):定义头文件中的函数与其他头文件中的原语

头文件(我们称之为header.h):

#ifndef header_H 
#define header_H 
(some return type) function(arguments); 
... other function declarations... 
#endif 

功能定义文件(我们称之为function.h):

#ifndef function_H 
#define function_H 
#include header.h 
(some return type) function(arguments){ 
      function body 
} 
... other function definitions... 
#endif 

主代码(我们称之为main.cc):

#include header.h 
#include function.h 

int main{ 
     .... 
     use the functions defined in the headers 
     .... 
     return 0; 
} 

当我用这种方法包含我写的函数时,我收到一条错误信息,说我多次定义函数并且不会编译。我究竟做错了什么?是否不允许在另一个头中声明函数原语而不是定义函数的头?或者,我是如何包含标题的?

一个特定的错误,我得到的一个例子是以下(用于调用的函数drawhist):

tmp/ccoADQB4.o: In function `plothist(TH1D*, TString, TFile*)': 
main.cc:(.text+0x5a0): multiple definition of `drawhist(TH1D*, TString, TFile*)' 
/tmp/cclAZJEr.o:function.cc:(.text+0x5a0): first defined here 

编辑:原来我定义中,我宣布我作为一个.cc文件的文件而不是.h文件。

+0

您可以显示错误? –

+0

好吧确定给我一分钟 –

+0

我想,你有一个* .cc文件,其中包括function.h,导致多个定义的符号。 – Podgorskiy

回答

0

试图改变自己的function.hfunction.cc,并在function.cc文件,把的#include “header.h”。 在你main.cc,把的#include “header.h”,那么它应该工作

+0

事实证明,我宣布的文件,我定义的函数function.cc而不是function.h改变这个问题解决了问题 –