Can anybody tell me what the difference is between an inline function and static inline function?

In which cases should I prefer static inline over inline?

I am asking this question because I have an inline function for which I am facing compilation issues during linking (relocation error:... symbol has been discarded with discarded section ...). I made it a normal function and it worked. Now some of my seniors told me try with static inline. Below is my function:

inline void wizSendNotifier (const char* nn_name, bpDU* arg=0, int aspect = -1)
{
   wizuiNotifier* notifier = ::wizNtrKit.getNotifier (nn_name);
   notifier->notify (arg, aspect);
}

and this not inside a class. This is inside a header file!

I guess the call to a static function should be done only in the particular TU where it is defined.

Since my function is in a header file and if i make it static, will it be the case that where ever I include that header file the static function can used used in that translation unit?

Edit
Report