Since you defined (not declared) your function in a header then you should make it inline. Change:
REAL diff(const REAL h, const REAL x, REAL (*func)(const REAL))
to:
inline REAL diff(const REAL h, const REAL x, REAL (*func)(const REAL))
Or just move the definition into a .c file and keep just a prototype in the header file.