Advertisement
Gistrec

C++ inline

Apr 8th, 2018
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. Директива inline_recursion - позволяет развернуть рекурсивную функцию указанной или неопределённой глубины путём инлайнинга
  2.  
  3. Ключевое слово __forceinline (для С и С++) заставляет компилятор всегда инлайнить функцию, если это возможно.
  4.  
  5. Никогда не инлайнить функцию с помощью директивы noinline
  6. __declspec(noinline) void func() {
  7. }
  8.  
  9. Посоветовать компилятору выполнить инлайн (хотя компилятор может решить проигнорировать этот совет, если сочтёт его плохим)
  10. inline void func() {
  11. }
  12.  
  13. Компилятор не всегда может заинлайнить функцию. Например, во время виртуального вызова виртуальной функции: функция не может быть заинлайнена, т. к. компилятор не знает точно какая именно функция будет вызована. Другой пример: функция вызывается через указатель на функцию вместо вызова через её имя. Вы должны стараться избегать таких ситуаций, чтобы инлайнинг был возможен. Полный список всех подобных условий можно найти в MSDN.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement