2013-09-10 5 views
4

Когда короткая функция определена внутри объявления класса, она автоматически превращается в встроенную функцию.Встроенные функции - Автоматический встроенный

Мои вопросы,

  1. Как короткая функция должна быть для автоматически-подкладку? Есть ли для этого лимитный лимит?
  2. Есть ли способ узнать, что функция автоматически вставлена ​​в линию?
+2

1) задать свой компилятор, 2) проверить машинный код. –

+1

inline - это просто подсказка для компилятора, компилятор которого может или не может следовать. – MARK

+0

Любая функция, определенная в определении класса, автоматически объявляется встроенной. Длина тела функции не имеет значения. Независимо от того, действительно ли эта функция будет встроена в сгенерированный машинный код, это совершенно отдельный и в значительной степени несвязанный вопрос. –

ответ

6
  1. Как короткая функция должна быть для автоматически-подкладку? Есть ли какой-либо лимит для этого?

Там нет жесткого ограничения (точнее да, мы можем найти верхний предел на данной системе, но вы не найдете прописанным в любом месте). Компилятор пытается предсказать, какими могут быть преимущества этого процесса при определенных обстоятельствах. Если компилятор решит, что вложение функции сделает код более медленным или недопустимо большим, он не будет встраивать его. Он не будет делать этого, если он просто не сможет этого сделать из-за синтаксической зависимости, например, другого кода, используя указатель функции для обратных вызовов, или экспортировать функцию извне, как в динамической/статической библиотеке кодов. Помните также, что функция маркировки inline только выражает желание, компилятор не обязан это делать. В C любая функция с внутренней связью может быть встроена, но функция с внешней связью может быть ограничена.

  1. Есть ли способ узнать, что функция автоматически вставлена ​​в линию?

Вы можете разобрать двоичный файл, и вы увидите, если есть вызов функции или если он находится в строке.

Do inline functions improve performance?

Inline Functions

Смежные вопросы