2014-01-26 74 views
3

我有我的代碼如下聲明:爲什麼我得到鐺警告:沒有以前的原型功能「差異」

//Central diff function, makes two function calls, O(h^2) 
REAL diff(const REAL h, const REAL x, REAL (*func)(const REAL)) 
{ 
    // diff = f(x + h) - f(x -h)/2h + O(h^2) 
    return ((*func)(x + h) - (*func)(x - h))/(2.0*h + REALSMALL); 
} 

這正好處於「utils.h」文件。當我編譯一個測試使用它,它給了我:

clang++ -Weverything tests/utils.cpp -o tests/utils.o 
In file included from tests/utils.cpp:4: 
tests/../utils/utils.h:31:6: warning: no previous prototype for function 'diff' [-Wmissing-prototypes] 
REAL diff(const REAL h, const REAL x, REAL (*func)(const REAL)) 

我在這裏失蹤?

回答

3

既然你定義(不聲明)您在頭功能,那麼你應該讓內聯。變化:

REAL diff(const REAL h, const REAL x, REAL (*func)(const REAL)) 

到:

inline REAL diff(const REAL h, const REAL x, REAL (*func)(const REAL)) 

或者只是移動定義爲一個.c文件,並只保留一個原型在頭文件。

相關問題