2012-02-14 5 views
1

Я программирования на C и мой компилятор GCC дает мне следующее предупреждение в моем вызове функции в mySedondFile.c:предупреждение: неявная декларация функции

implicit declaration of function 'func' 

Прототип функции объявлен в myfile.h как:

void func(char*); 

определение функции в myfile.c

void func(char*x); 

mySecondFile.c содержит:

#include "myfile.h" 

func("Hello"); 

я пропускаю, почему это будет жаловаться.

+2

Не могли бы вы показать полное содержимое этих файлов (уменьшить их до минимального содержимого, которое все еще воспроизводит ошибку)? Дьявол в деталях для чего-то подобного. –

+0

Попробуйте скомпилировать с '-Wall -Wextra -pedantic' и посмотреть, не поймает ли он что-нибудь еще. – icktoofay

ответ

5

Эта ошибка испускается из-за того, что func не был объявлен в тот момент, когда вы его называете.

Похоже, что ваши файлы заголовков не совсем такие, как вы описываете. Возможно, есть условный код. Возможно, у вас есть защитник заголовка, который работает неправильно. Другая возможность заключается в том, что у вас есть ошибка в случае письма и объявлена ​​функция Func, но она называется func. Очень сложно сказать, не видя фактических файлов, но вам нужно искать причину, по которой func не объявлен в блоке перевода mySecondFile.c.

Чтобы проиллюстрировать это немного более ясно, следующий код:

int main(void) 
{ 
    func("Hello"); 
    return 0; 
} 

результаты в этом предупреждении:

prog.c: In function ‘main’: 
prog.c:3: warning: implicit declaration of function ‘func’ 

, который точно так, как вы сообщаете.

В соответствии с вашим описанием ваш код содержит файл заголовка, который объявляет func. Компилятор просит вас отличить вас, и вам остается только выяснить, почему func не объявлен.

+0

Итак, в объявлении функции в файле .h был #ifdef, который вызывал эту проблему. – SSS

+0

@SS. Эти ifdefs могут вас смутить! –

+0

@SS: Учитывая, что этот пост был просмотрен почти 9000 раз, вы действительно должны официально принять ответ Дэвида Хеффернана. –

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