Директива inline_recursion - позволяет развернуть рекурсивную функцию указанной или неопределённой глубины путём инлайнинга Ключевое слово __forceinline (для С и С++) заставляет компилятор всегда инлайнить функцию, если это возможно. Никогда не инлайнить функцию с помощью директивы noinline __declspec(noinline) void func() { } Посоветовать компилятору выполнить инлайн (хотя компилятор может решить проигнорировать этот совет, если сочтёт его плохим) inline void func() { } Компилятор не всегда может заинлайнить функцию. Например, во время виртуального вызова виртуальной функции: функция не может быть заинлайнена, т. к. компилятор не знает точно какая именно функция будет вызована. Другой пример: функция вызывается через указатель на функцию вместо вызова через её имя. Вы должны стараться избегать таких ситуаций, чтобы инлайнинг был возможен. Полный список всех подобных условий можно найти в MSDN.