You cannot inline functions that use a variable number of
arguments.
You
cannot declare a function as inline after it has been
called.
To use _Inline or inline, the code for the function to be
inlined must be in the same source file as the call to
the function. To inline across source files, you must
place the function definition (qualified with _Inline) in
a header file that is included by all source files where
the function is to be inlined.
Turn off inlining (/Oi-) if you plan to debug your
executable module. Inlining can make debugging difficult;
for example, if you set an entry breakpoint for a
function call but the function is inlined, the breakpoint
will not work.
You cannot selectively disable inlining for user
functions: you can request that a function be inlined,
but you cannot turn inlining on and then request that a
specific user function not be inlined.
A function is not inlined during an inline expansion of
itself. For a function that is directly recursive, the
call to the function from within itself is not inlined.
For example, given three functions, A, B, and C, where:
A calls B
B calls C
C calls back to B
the following inlining takes place:
The call to B from A is inlined.
The call to C from B is inlined.
The call to B from C is not inlined because it is
made from within an inline expansion of B itself.