Macros are declarations that are substituted by the preprocessor (before the actual compile) The are not functions at all. Before the actual compile phase commences the macros are long-gone, and all that remains is their expansions (including expansion to nothing).
Inline functions are, in fact, language-compliant functions, with scope rules, variable declarations, logic constructs (loops, etc), and so on. An inline function is not expanded pre-compile-step like macros. They are compiled just as regular code is, but can be then injected (for lack of a better term) into compiled code and optimized as needed.