我想声明函数我稍后在头文件中的主代码中使用。我做了一个头文件,我在其中声明了函数原语,一个文件定义了函数,还有一个包含实际代码的主文件。该结构可以看出如下(我会说明问题尽可能通用没有我的特定代码):定义头文件中的函数与其他头文件中的原语
头文件(我们称之为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文件。
您可以显示错误? –
好吧确定给我一分钟 –
我想,你有一个* .cc文件,其中包括function.h,导致多个定义的符号。 – Podgorskiy