2014-10-29 1 views
0

Я создал функцию внизу (getHobby (Hobbies)) в файле заголовка и когда я вызываю эту функцию в самом файле заголовка, я получаю сообщение об ошибке:Очередь вызова вызова в заголовке файла

conflicting types for 'getHobby'  

HobbiesTest.h

enum Hobbies { 
    SKATING, SPORTS 
}; 
char *getHobby(enum Hobbies hobbie) { <-- Compilation error "conflicing types for  
             'getHobby' 
switch (hobbie) { 
    case SKATING: 
     return "SKATING"; 
    case SPORTS: 
     return "SPORTS"; 
    } 
    return "INVALIDOPTION"; 
} 
void enumTest(){ 
    printf("\nYour hobby is: %s",getHobby(SKATING)); 
} 

И, когда я звоню ту же функцию из основного файла в какой-то метод, тот же код работает отлично.

main.C

include <HobbiesTest.h> 

int main(void) {  
    enumTest(); 
    return 0; 
} 

void enumTest(){ 
    printf("\nYour hobby is: %s",getHobby(SKATING)); 
} 

Почему я получаю ошибку компиляции в случае заголовка файла?

+0

Также функция void enumTest() определена дважды в заголовке и один раз в main.c – Sekory

+0

Я протестировал этот код в двух случаях: 1. С файлом заголовка 2. Из основного файла. Когда я создал функцию enumTest() в файле Main.c, я удалил ее из файла заголовка, и когда я создал ее в заголовочном файле, я просто вызываю ее непосредственно в Main.c. –

+0

Хорошо, предполагая, что у вас есть void enumTest() только в заголовочном файле есть случай SPORTS вместо SPORTING ... Но, наверное, все, что мне кажется, все в порядке ... – Sekory

ответ

0

Помещенный

enum Hobbies { 
    SKATING, SPORTING 
}; 

В начале заголовка файла. Вы используете это перечисление до его определения.

+0

Спасибо за ответ. Фактически, перечисление Хобби уже объявлено в верхней части файла заголовка. Приносим извинения за то, что вы записали его в конце. Я просто копирую отдельные методы отдельно, а не вставляя весь код. Простите за это. –

+0

Ну тогда отредактируйте свой вопрос, нам нужно увидеть точный код, который вызывает проблемы. Мой ответ может быть преждевременным, но я просто не могу его игнорировать ... – Sekory

+0

Я обновил его. –

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