Я пытаюсь объявить функции, которые я позже использую в своем основном коде в файле заголовка. Я сделал один заголовочный файл, в котором я объявлял примитивы функций, один файл, где я определял функции, и основной файл, содержащий фактический код. Структуру можно показать следующим образом (я проиллюстрировать эту проблему как можно более общий без моего конкретного кода):Определение функций в файле заголовка с помощью примитивов в другом файле заголовка
Заголовочный файл (назовем это 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
EDIT: Оказалось, что я определил файл, в котором я объявленную свои функции в виде файла .cc вместо файла .h.
вы можете показать ошибки? –
Хорошо, дайте мне минуту –
Я думаю, у вас есть еще один файл * .cc, который включает функцию.h, что приводит к нескольким определенным символам. – Podgorskiy