2015-11-07 15 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 

EDIT: Оказалось, что я определил файл, в котором я объявленную свои функции в виде файла .cc вместо файла .h.

+0

вы можете показать ошибки? –

+0

Хорошо, дайте мне минуту –

+0

Я думаю, у вас есть еще один файл * .cc, который включает функцию.h, что приводит к нескольким определенным символам. – Podgorskiy

ответ

0

Попробуйте изменить ваш function.h к function.cc, и в вашем function.cc файл, поместите #include "header.h". В вашем main.cc, поставил #include «header.h», то он должен работать

+0

Ну, оказалось, что я объявил файл, где я определил функции как function.cc вместо функции. H Изменив это, решил проблему –

 Смежные вопросы

  • Нет связанных вопросов^_^