使用其他头文件

时间:2015-11-07 21:52:44

标签: c++ function header primitive

我正在尝试声明稍后在头文件中的主代码中使用的函数。我创建了一个头文件,其中我声明了函数基元,一个文件,我定义了函数,以及一个包含实际代码的主文件。结构可以看作如下(我将在没有特定代码的情况下尽可能地说明问题):

头文件(让我们调用这个header.h):

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

函数定义文件(让我们调用这个函数.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文件的文件。

1 个答案:

答案 0 :(得分:0)

尝试将 function.h 更改为 function.cc ,并在 function.cc 文件中输入 #include “header.h”即可。 在 main.cc 中,输入 #include“header.h”,然后它就可以了