2013-05-29 2 views
0

У меня есть вопрос относительно к функции декларации:Как очистить неявное объявление функции в C?

Я объявил функцию в БЛ

//b.c 
void getNumber(); 

//common header 
common.h 

В переменного тока я использую это так: // ас

#include "common.h" 
void getInfo() 
{ 
    getNumber(); 
} 

но жалуйтесь, что getNumber является неявным объявлением функции, в чем причина?

+5

Вы должны поместить декларацию в 'common.h', а не в' b.c'. – glglgl

+1

'void foo()' не является прототипом, вместо этого вы должны использовать 'void foo (void)'. – effeffe

ответ

3

добавить следующую строку в common.h

void getNumber(); 

этот файл b.c должен содержать определение функции таким образом

void getNumber() { 
    .... 
} 
0

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

Если ваше объявление void getNumber(); было прочитано компилятором после его первого использования (void getInfo()), вы получите предупреждение warning: implicit declaration of function ‘getNumber’. Это произошло потому, что компилятор, когда впервые встретил getNumber в void getInfo(), должен был угадать его тип возврата - следовательно, предупреждение. Я думаю, что это то, что вы делаете, хотя ваш примерный код не показывает этого.

Если ваш void getNumber(); был впервые прочитан компилятором, предупреждения не будет.

Включение объявления функции в файл заголовка, как хорошая идея. Обязательно заполните include "common.h" перед вашим getInfo().

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