How does an inline function differ from a preprocessor macro?
To add another difference to those already given: you can't step through a #define in the debugger, but you can step through an inline function.
#define