2010-06-23 4 views
2

вот небольшой вопрос о встроенных функциях в C++.встроенные функции в C++

На какой стадии компиляции в C++ встроены встроенные функции, действующие на вызов?

как это в основном работа.

позволяет сказать, что компилятор решил, что функция particualr должна быть встроенной после того, как программист запросил ключевое слово inline перед функцией, когда компилятор выполнит это для программиста. I означает, на какой стадии сборник.

Это на этапе предварительной обработки, как в макросах c.

+0

Дополнительная информация: http://stackoverflow.com/questions/1759300/c-when-should-i-write-the-keyword-inline-for-a-function-method – Alerty

+0

дубликат, упомянутый выше, основан на обсуждении о концепции встроенных функций. но мой вопрос заключается не в концепции, а в отношении процесса компиляции. – Vijay

+0

@Georg Fritzsche: Я отредактировал свой комментарий;) – Alerty

ответ

4

Это зависит от компилятора. И некоторые этапы некоторых компиляторов не будут иметь соответствующих этапов в других компиляторах. Поэтому у вашего вопроса нет определенного ответа.

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

Выполнение его, как расширение макропроцессора, было бы слишком рано. Тогда компилятор не располагает достаточной информацией для проведения соответствующей проверки типов, и легче также совершать ошибки, которые могут вызывать побочные эффекты более одного раза и так далее.

И GMan предоставил отличную ссылку в Википедии в комментарии, который более подробно рассказывает о function inlining process, чем я здесь. Мой ответ в целом верен, но есть много вариаций, даже больше, чем я думал.

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

  • Нет связанных вопросов^_^