__inline, __inline__ and __forceinline are all implementation specific. Because of the double underscore they are all identifiers reserved for the implementation so shouldn't conflict with identifiers used in applications.
__inline is a vendor-specific keyword (e.g. MSVC) for inline function in C, since C89 doesn't have it.
__inline__ is similar to __inline but is from another set of compilers.
__forceinline is another vendor-specific (mainly MSVC) keyword, which will apply more force to inline the function than the __inline hint (e.g. inline even if it result in worse code).
There's also __attribute__((always_inline)) in GCC and clang.